標籤:android style blog http io ar color 使用 sp
最近項目中要做一個選標籤的效果,使用者可以輸入標籤也可以直接選擇標籤。需求是標籤只有一個,此時就需要在使用者選中標籤以後不能讓使用者繼續輸入,但是又可以刪除標籤。顯然使用setEnable(false)是不可行的
最後找到了一個方法,使用InputFilter這個類對所有的欄位進行過濾,不管使用者輸入什麼都顯示一個Null 字元串
etActionTag.setFilters(new InputFilter[] { new InputFilter() { public CharSequence filter(CharSequence src, int start, int end, Spanned dst, int dstart, int dend) { return src.length() < 1 ? dst.subSequence(dstart, dend) : ""; } } });
這樣做就可以保證使用者沒法進行輸入了。但是確出現了使用者同時也無法刪除的情況。
於是考慮對刪除鍵進行監聽,在按了刪除鍵,同時輸入框有設定過濾的時候直接把輸入框設定為空白。然後去掉輸入框的過濾,然後就是實現了這個效果。
etActionTag.setOnKeyListener(new OnKeyListener(){ @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if(etActionTag.getFilters()!=null){ if(keyCode==KeyEvent.KEYCODE_DEL){ etActionTag.setFilters(new InputFilter[]{}); etActionTag.setText(""); return true; } } return false; } });
效果如下:
Android 屏蔽EditText的輸入