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

一般情况下都不会出现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)如果是输入,就不断忽略掉输入的字符,字符还是不变。

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值