一般情况下都不会出现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)如果是输入,就不断忽略掉输入的字符,字符还是不变。
也不知道我理解对不对,有真正知道含义的请不吝赐教。