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

网友投稿 1633 2022-05-28

项目里的一个fragment有一个EditText输入框,在输入文字后,做了其他操作,但是输入框一直有光标在闪动。当再点击输入框时,软键盘死活不弹出来。除非切换到其他页面再返回来,才可以弹出。

今天终于明白了为什么。因为之前的焦点没有失去,所以当再点击输入框时,无法触发新的焦点事件,所以键盘就不会弹出来了。解决的办法就是要清除之前的焦点。

第一步:

android 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

谢谢阅读!

Android

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【PHP】\r \r\n \t是什么
下一篇:Linux目录详解以及软件安装规范
相关文章