android fragment里的EditText为什么获取了焦点,而软键盘却不弹出来

举报
yd_221104950 发表于 2020/12/05 00:00:43 2020/12/05
【摘要】 项目里的一个fragment有一个EditText输入框,在输入文字后,做了其他操作,但是输入框一直有光标在闪动。当再点击输入框时,软键盘死活不弹出来。除非切换到其他页面再返回来,才可以弹出。 今天终于明白了为什么。因为之前的焦点没有失去,所以当再点击输入框时,无法触发新的焦点事件,所以键盘就不会弹出来了。解决的办法就是要清除之前的焦点。 第一步: 在布局文件中,把Ed...

项目里的一个fragment有一个EditText输入框,在输入文字后,做了其他操作,但是输入框一直有光标在闪动。当再点击输入框时,软键盘死活不弹出来。除非切换到其他页面再返回来,才可以弹出。
今天终于明白了为什么。因为之前的焦点没有失去,所以当再点击输入框时,无法触发新的焦点事件,所以键盘就不会弹出来了。解决的办法就是要清除之前的焦点。
第一步:
在布局文件中,把EditText元素设置如下属性(这样会比较好):

   android:focusable="true" android:focusableInTouchMode="true"

  
 
  • 1
  • 2

第二步:
然后在代码中调用clearFocus()方法清除焦点。

  et.clearFocus();

  
 
  • 1

这样就可以了。

我们还可以根据EditText的isInputMethodTarget()方法来决定是否要清除焦点。如果EditText是当前输入法的目标,它就是true,否则为false。像我们本章提到的情况,属于有焦点,但不是输入法的目标,isInputMethodTarget()为false。代码修改如下:

 et.setOnClickListener((v)->{ if(!et.isInputMethodTarget()){ et.clearFocus(); // ...other actions } });


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

谢谢阅读!

文章来源: blog.csdn.net,作者:WongKyunban,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_40763897/article/details/92596588

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。