android EditText 如何使ellipse 起作用

如何實現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()方法.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章