在我的应用程序中,我有一个Activity,其中包含一个Fragment,其中包含一个带有各种EditTexts的ListView,如下所示:
活动 - >片段 - > ListView - > EditTexts
点击EditText时,会显示软键盘并发生以下两种情况之一:
如果活动尚未失去焦点(例如,通过访问Android主屏幕),整个活动会略微向上滑动,以免键盘遮挡EditText。
如果Activity在某些时候失去焦点(再次,例如访问Android主屏幕),ListView会在键盘上方滚动EditText(活动保持静止),但EditText失去焦点!
这些结果都不是理想的。理想情况下,我总是希望ListView在键盘上方滚动EditText,而EditText不会失去焦点。任何人都可以指出我正确的方向和/或解释为什么我现在看到同一行动的两种不同行为?
编辑:作为参考,我正在为Android 4.2构建并在Nexus 7平板电脑上进行测试。
答案 0 :(得分:1)
问题是,当您在ListView行中使用EditText时,可能会重新绘制ListView以为键盘腾出空间。重新绘制ListView时,系统不记得光标所在的位置。
如果在ScrollView中使用LinearLayout,似乎不会发生同样的问题 而不是ListView。这听起来很愚蠢,但确实有效。
答案 1 :(得分:1)
最近我也遇到过这个问题,我通过在AndroidManifest.xml中添加 android:windowSoftInputMode =“adjustPan”来解决这个问题。这不会导致listview重绘,所以edittext将会不要失去焦点。