EditText 设置光标位置及点击屏蔽软键盘

1,使光标移动到制定的位置:

editText.setSelection(2);

输入的参数是个整数

2,在请求出现光标是,也就是在获取焦点时:

editText.requestFocus();

清除光标,也就是失去焦点:

editText.clearFocus();

3,让EditText不出现光标:

editText.setCursorVisible(false);


在编写应用的时候,如果我们要将光标定位到某个位置,可以采用下面的方法:

1 CharSequence text =editText.getText();
2 //Debug.asserts(text instanceof Spannable);
3 if (text instanceof Spannable) {
4     Spannable spanText = (Spannable)text;
5     Selection.setSelection(spanText, text.length());
6 }

其中红色标记的代码为你想要设置的位置,此处是设置到文本末尾。


因为项目中要用自定义的随机键盘,所以必须得屏蔽系统软键盘,但是在4.0的测试系统来看,使用editText.setInputType(InputType.TYPE_NULL)方法固然能隐藏键盘,但是光标也会隐藏,所以无法使用。 

        3.0以下版本可以用editText.setInputType(InputType.TYPE_NULL)来实现。或者设置editText.setKeyListener(null)来实现。3.0以上版本除了调用隐藏方法setShowSoftInputOnFocus(false),由于是系统内部方法,无法直接调用所以采用反射的方式来进行调用,如下

在项目中(当前项目使用的是android4.0)


注:

        上面反射的方法是从TextView的源码中找到的。因为EditText是继承TextView,看网上据说有的sdk里面是"setSoftInputShownOnFocus",反正具体是跟自己的sdk相对应就可以了。4.0系统对应设置的是setShowSoftInputOnFocus,4.2系统对应设置的是setSoftInputShownOnFocus,这两个版本的都测试过了,是正确可用的。


注:

        上面反射的方法是从TextView的源码中找到的。因为EditText是继承TextView,看网上据说有的sdk里面是"setSoftInputShownOnFocus",反正具体是跟自己的sdk相对应就可以了。4.0系统对应设置的是setShowSoftInputOnFocus,4.2系统对应设置的是setSoftInputShownOnFocus,这两个版本的都测试过了,是正确可用的。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值