首页 > 代码库 > Android 屏蔽EditText的输入

Android 屏蔽EditText的输入

最近项目中要做一个选标签的效果,用户可以输入标签也可以直接选择标签。需求是标签只有一个,此时就需要在用户选中标签以后不能让用户继续输入,但是又可以删除标签。显然使用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 屏蔽EditText的输入