Android ListView下方放一个EditText,软键盘弹出问题。

布局:
父布局是一个RelativeLayout,最上面是一个顶部标题,中间是一个ListView,
最下面是一个包含EditText的LinearLayout。
大概写法就是
标题android:layout_alignParentTop="true"

包含EditText的LinearLayout android:layout_alignParentBottom="true"

中间的ListView

android:layout_below="标题"

android:layout_above="底部LinearLayout"

这是未点击EditText,软键盘未弹出时的位置
软键盘未弹出

问题:
android:windowSoftInputMode="stateHidden|adjustResize"
android:windowSoftInputMode="stateHidden|adjustPan"

如果将设置为adjustPan,点击EditText软键盘弹出,会以当前EditText的位置为七点

弹出软键盘,软键盘的上方会平齐EditText的底线,但是因为EditText是包含在

LinearLayout里面,所以会覆盖EditText下方属于LinearLayout的一部分布局。

这是属性设为adjustPan时,点击EditText弹出软键盘的布局,没有跳转到ListView的

底部,直接在原始位置弹出软键盘,顶部知道EditText的光标为止,覆盖了LinearLayout的部分布局
adjustPan

如果将设置为adjustResize,点击EditText软键盘弹出,会定位到ListView的最后一个Item,然后向上撑起布局,没有覆盖布局。

这是属性设为adjustResize时的效果,会跳到ListView的最后一个Item,然后从这里将上方所有布局顶起来,但没有覆盖
adjustResize

不知道大家有没有好的建议和经验来解决这个问题,求教。

2个回答

找到问题原因了,是因为我的ListView设置了android:transcriptMode="alwaysScroll"属性,去掉就好了。
android:windowSoftInputMode设置为"stateHidden|adjustUnspecified"其实在我这里adjustUnspecified应该等价于ReSize吧
没做实验验证。恩,总之,谢谢大家了。

qq_37168430
qq_37168430 问题解决了,谢谢啊,但是现在一进入页面他就会主动地把软键盘弹出来,
接近 3 年之前 回复
Earth_Programer
Earth_Programer 我现在的问题是adjustPan会覆盖一小部分布局或者Resize会跳到ListView底部弹出软键盘。这两个能解决一个就OK。
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问