ListView 与 EditText 键盘问题
Posted
技术标签:
【中文标题】ListView 与 EditText 键盘问题【英文标题】:ListView with EditText Keyboard Issues 【发布时间】:2012-12-25 01:08:51 【问题描述】:在我的应用程序中,我有一个 Activity,其中包含一个 Fragment,其中包含一个带有各种 EditTexts 的 ListView,如下所示:
Activity -> Fragment -> ListView -> EditTexts
当点击 EditText 时,会显示软键盘并发生以下两种情况之一:
如果 Activity 尚未失去焦点(例如,通过访问 android 主屏幕),则整个 Activity 会略微向上滑动,以便 EditText 不会被键盘遮挡。
如果 Activity 在某个点失去焦点(再次,例如访问 Android 主屏幕),ListView 会在键盘上方滚动 EditText(Activity 保持静止),但 EditText 失去焦点!
这些结果都不理想。理想情况下,我总是希望 ListView 在键盘上方滚动 EditText 而不会使 EditText 失去焦点。谁能指出我正确的方向和/或解释为什么我现在看到同一操作的两种不同行为?
编辑:作为参考,我正在为 Android 4.2 构建并在 Nexus 7 平板电脑上进行测试。
【问题讨论】:
【参考方案1】:问题在于,当您在 ListView 行中使用 EditText 时,您的 ListView 可能会被重绘以为键盘腾出空间。并且当你的 ListView 被重绘时,系统不会记住光标之前的位置。
如果您在 ScrollView 中使用 LinearLayout,似乎不会发生同样的问题 而不是 ListView。这听起来很愚蠢,但确实有效。
【讨论】:
【参考方案2】:最近我也遇到了这个问题,我通过在 AndroidManifest.xml 中添加 android:windowSoftInputMode="adjustPan" 解决了这个问题。这不会导致列表视图重绘,所以编辑文本会不要失去焦点。
【讨论】:
以上是关于ListView 与 EditText 键盘问题的主要内容,如果未能解决你的问题,请参考以下文章
ListView + EditText => 糟糕的键盘行为
转Android开发之ListView+EditText-要命的焦点和软键盘问题解决办法
Android ListView下方放一个EditText,软键盘弹出问题。
Android N(7.0) 在ListView里显示EditText时软键盘弹出时会自动切换到全键盘的问题?