如何實現EditText 的 ellipse 起作用,看過很多的文章,也看過別人的實現。但是都不如意,以下是我的幾種實現方式的探索:
實現之前請先設置相關參數,例如:setEllipsize(TextUtils.TruncateAt.END);setSingleLine();setLines(1);
首先最簡單的設置,在xml 中設置editorable = false,enable = false,就可以現實ellipse 中的...的效果,但是如果想在代碼中動態設置editorable這個屬性,很抱歉,這個屬性沒有對外開放,不能動態設置。
開始正題,BufferType 用於標識當前的是否可編輯的屬性,在Edittext中
已經嚴格控制了這個輸入類型的設置。所以從這個方向暫時行不通,但是查到一個非常關鍵的方法
這個方法用於創建當前的編輯器,什麼時候會忽略這個編輯器的創建,並且對外開放呢? 答案是:setKeyListener,所以正確的設置方法爲:
setEllipsize(TextUtils.TruncateAt.END);
setSingleLine();
setLines(1);
setKeyListener(null);
既然可以設置成ellipse效果,那肯定可以還原原來的效果,setKeyListener(new BaseKeyListener() {
@Override
public int getInputType() {
// 返回當前的輸入法
return inputType;
}
})
這裏面還有一個坑就是,在你切換這兩種顯示的時候,一定要從新調用 setText()方法.