标签:android style blog http io ar color 使用 sp
最近项目中要做一个选标签的效果,用户可以输入标签也可以直接选择标签。需求是标签只有一个,此时就需要在用户选中标签以后不能让用户继续输入,但是又可以删除标签。显然使用setEnable(false)是不可行的
最后找到了一个方法,使用InputFilter这个类对所有的字段进行过滤,不管用户输入什么都显示一个空字符串
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 style blog http io ar color 使用 sp
原文地址:http://www.cnblogs.com/gejs/p/4151920.html