ListView + EditText => 糟糕的键盘行为

Posted

技术标签:

【中文标题】ListView + EditText => 糟糕的键盘行为【英文标题】:ListView + EditText => bad keyboard behavior 【发布时间】:2015-01-19 14:31:13 【问题描述】:

我在项目中使用带有一些 EditTexts 的 ListView,并且在屏幕底部(在列表视图上方)有一个浮动操作底部 (fab)。

当我选择一个 EditView 并且键盘出现在它上面时我想要什么:

滚动 ListView 以显示 EditView。 晶圆厂停留在屏幕底部。 仅此而已。

我得到了什么:

列表视图未滚动到项目,键盘未针对触摸的 EditText,它不针对任何目标(键盘以良好的输入模式打开,然后重置)。 晶圆厂与键盘对齐移动,而不是被覆盖。

我尝试了android:windowSoftInputMode="adjustNothing" 选项,然后 fab 按预期停留在底部,但 listView 不会滚动到 editText。键盘的目标是好的 EditText。除了我需要重新实现对项目的滚动之外,这几乎是好的。

我尝试了选项android:windowSoftInputMode="adjustPan",然后整个屏幕向上移动,这不是预期的行为。

实际上是否有解决方案,或者我应该坚持“不是很好,但至少是功能性”的adjustPan?

【问题讨论】:

你能添加一些屏幕吗? 由于回收利用,不建议在列表中使用可编辑视图。 Google 建议为每一行设置不可变的列表和编辑活动 【参考方案1】:

ListView 不适用于可编辑视图,因为内部视图会被重绘一次或多次,从而导致多个焦点事件。

这发生在 10 年,因此我预计不会很快修复。我解决了这个问题。

Buggy ListView makes me sad

【讨论】:

技术上。这就是重新设计 Android 5.0 中引入的RecyclerView 的原因。 RecyclerView 也有同样的问题 ...哦。嗯,这是有问题的。

以上是关于ListView + EditText => 糟糕的键盘行为的主要内容,如果未能解决你的问题,请参考以下文章

EditText 不会显示在 ListView 上方

在android中的EditText上输入时如何过滤ListView数据

convertview listview 适配器 EditText 混淆

EditText 现在显示在 ListView 下

ListView 上方未显示 EditText 和按钮

ListView为啥滚动listView时edittext数据丢失