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;
            }
            
        });

 

效果如下:

 

posted @ 2014-12-08 20:43  jiashu.ge  阅读(872)  评论(0编辑  收藏  举报