android edittext清空焦点方法clearFocus()无效?

平时我们开发时,如果页面中包含EditText,那么他会抢占焦点,并且弹出软键盘。如果我们不想让他获取焦点弹出软件怎么办呢?

        两种方案:

        第一,设置activity的属性为android:windowSoftInputMode="stateHidden|adjustResize。这样就可以隐藏软键盘弹出,但是EditText还是获取焦点的状态。windowSoftInputMode属性的含义可百度android:windowSoftInputMode,这里就不详细介绍了。

       第二,设置Edittext的父布局的属性添加android:focusable="true" android:focusableInTouchMode="true"。具体原理:因为给父布局设置获取焦点的能力并且获取焦点,这样就会让EditText抢占不到焦点从而不弹出软键盘了。注意:这里添加属性的ViewGroup必须是EditText的父布局,不然可能会设置无效。

      对于方案二,这里我有个疑问?既然是因为EditText抢占焦点存在键盘弹出的问题,那么我们是不是可以在页面加载时,清空EditText的焦点,这样子是不是EditText就会失去焦点不弹出软键盘了呢?经过测试,它居然是不会的,那这是为什么呢?原来呀,是因为受焦点分发的影响,焦点分发具体 百度,这里不做详细描述。首先页面中EditText是唯一一个具有获取焦点的的控件,虽然调用clearFocus()方法清空了焦点,但是它又会重新获取了焦点,因此就会给人觉得clearFocus()方法无效的假象,但真实情况是它在整个过程中是有过清空焦点的操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值