windowSoftInputMode的adjustPan无效问题研究

windowSoftInputMode的adjustPan无效问题研究

问题

最近在修改原生Launcher3的遇到一个问题,项目要求修改桌面文件夹时,弹出输入法会挡住输入框,所以要求输入框也随着输入法一起往上移.其实原生的Launcher3是做了适配加了android:windowSoftInputMode="adjustPan"属性的,可惜使用时发现只有前一两次呼出输入法时,输入框才会一起上移,后面就不行了,需要进入其他应用返回后才恢复.就像这样:

image

环境

Android 4.4

原因

找了很久,几经各种注释排除发现原来和EditText的属性值有关.

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        android:gravity="center_horizontal"
        android:singleLine="true"
        />

发现singleLine属性和gravity属性在一起用的时候,就有可能出现上述问题,然而也不是必然会出现,测试了left和center_vertical都是没有问题的,但是center_horizontal,center,right都存在问题.

解决办法

singleLine属性是已经被谷歌遗弃的属性,把singleLine=”true”换成maxLines=”1”,问题便解决了.

image

注意

  • 在自己Android 7.0的手机上发现,用singleLine属性也并没有这个问题,或许以上问题只有在Android4.4及以前才会出现.

总结

  • Google弃用一些属性的时候,总会有原因的,这次的问题说明,应当尽量使用新方法是替代被摒弃的方法,或者了解清楚方法为何被摈弃的原因.

猜你喜欢

转载自blog.csdn.net/dqh147258/article/details/79174151