现在的位置: 首页 > 综合 > 正文

EditText内容不可更改的设置方法

2019年04月26日 ⁄ 综合 ⁄ 共 819字 ⁄ 字号 评论关闭

一般情况下都不会出现EditText编辑框设置不可修改,顾名思义EditText就应该可以修改嘛。哈哈。

但是有些从手机或者SIM卡读取配置信息出来会显示在EditText中,设计者并不希望用户去修改这些数据而造成一些功能的问题。

首先点拨最简单的设置方式,那就是

mEditText.setFocusable(false);

哈哈,是不是很奸诈,不让用户获得焦点,自然无法更改了,也无法出现点击组件时应该出现的输入法框。

第二种就会显得比较有技术含量了,我也是网上找的高手写的方法,我也只能去理解他这样做的原因,我想不出来 -。-

mEditText.setFilters(new InputFilter[] { new InputFilter() {  
       @Override  
       public CharSequence filter(CharSequence source, int start,  
            int end, Spanned dest, int dstart, int dend) {  
             if(!centerServiceNumberCanBeChanged)
                return source.length() < 1 ? dest.subSequence(dstart, dend) : "";     
             else
	       return null;
             }  
            } });;

有心人可以去打下log追踪一下参数的意义。我根据我查看log,得出的情况是

source是EditText中已有的text,start和end分别是text的开始和结束位置。dest为输入字符,相当于一个临时字符串(就是我们用拼音输入法输入时,还没空格选定字符之前输入框上显示的字符)dstart和dend为输入字符的开始和结束位置。

方法的意义就是:1)如果是删除,就不断用删除掉的部分去填充剩下来的字符,字符不变;

                                2)如果是输入,就不断忽略掉输入的字符,字符还是不变。

也不知道我理解对不对,有真正知道含义的请不吝赐教。

抱歉!评论已关闭.