Android 当键盘打开时,ListActivity ListView中的编辑文本会失去焦点

Android 当键盘打开时,ListActivity ListView中的编辑文本会失去焦点,android,listview,focus,android-edittext,listactivity,Android,Listview,Focus,Android Edittext,Listactivity,我一直在寻找这个问题的答案,但所有看起来像答案的东西都不起作用,所以我想我会问 我在列表视图中添加了两个EditText框,它是列表活动的基础。当我将windowSoftInputMode设置为adjustPan并单击EditText时,它会一直工作,直到您再次单击它,然后键盘将其覆盖。当我使用adjustResize时,它会工作,除非键盘弹出,EditText失去焦点,我必须再次点击它才能打字 我试图找出如何捕捉onResize,但这似乎与视图相关,而不是与活动相关,我不完全确定如何收听它。我

我一直在寻找这个问题的答案,但所有看起来像答案的东西都不起作用,所以我想我会问

我在
列表视图
中添加了两个
EditText
框,它是
列表活动
的基础。当我将
windowSoftInputMode
设置为
adjustPan
并单击
EditText
时,它会一直工作,直到您再次单击它,然后键盘将其覆盖。当我使用
adjustResize
时,它会工作,除非键盘弹出,
EditText
失去焦点,我必须再次点击它才能打字


我试图找出如何捕捉
onResize
,但这似乎与视图相关,而不是与活动相关,我不完全确定如何收听它。我还尝试了
编辑文本
框和
列表视图
本身的各种聚焦设置(如我读到的其他帖子所建议的)这似乎也没有什么帮助。

在执行
调整大小之后,您是否尝试过通过执行类似
EditText.requestFocus()的操作,确保将焦点重置为
EditText
这样它就可以再次聚焦,用户不必再次点击它。您可以使用
EditText.isFocused()
查看它在调试日志语句或其他语句中是否聚焦(true)或不聚焦(false)


您可能需要使用
SetFocusable()将字段设置为
focusable
但要小心,因为这可能会从
列表视图本身带走焦点,并阻止您以后滚动或选择内容,因此您必须使用可聚焦和聚焦的设置。

我在项目中也遇到过同样的问题

为了解决这个问题,我对
EditText
进行了子分类,并按下了“后退”按钮,以确保我的
EditText
此时清除了焦点

检查,关于如何做


祝您好运。

您真正需要做的就是将此应用于您的ListView:

XML:

android:descendantFocusability="afterDescendants"
listView.setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS);
Java:

android:descendantFocusability="afterDescendants"
listView.setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS);

您好,下面的链接可能对您有所帮助

对我来说,以下组合对我有所帮助(尤其是3号):

1) 将以下内容添加到清单文件中的相关活动中,这是调整ListView大小以仅填充软键盘上方区域所必需的:

android:windowSoftInputMode="adjustResize"
2) 使用下面的选项,ListView只有在其子代都不需要焦点时才会获得焦点。子体(编辑文本)需要获得并保持焦点

<ListView
...
android:descendantFocusability="afterDescendants"/>

3) 键盘正上方拼写建议栏的自动显示/隐藏会不断触发ListView刷新。我关闭了ListView中任何EditText的建议

<EditText
...
android:inputType="textNoSuggestions|textVisiblePassword" />


回收器视图效果最好,无需在任何地方乱搞任何其他属性。

在我的情况下,添加类似代码以显示以下内容非常有效:

android:windowSoftInputMode="adjustPan"

有没有可能显示它的屏幕截图?还有一些代码可能会有帮助。可能是重复的,我试图捕捉onResize,但由于它与视图相关,而不是与活动相关,我不完全确定如何做。我尝试了许多不同的设置焦点的方法,这些方法都是从其他类似的问题中得到的,但似乎都没有帮助。也许最好不要调整键盘的大小,而是将编辑文本移到键盘上方的某个位置?你需要文本框的具体原因是什么?是的,这是指定的设计。哦,我的天啊,谢谢你!今天,这又变成了一个更大的问题,所以我刚刚看到了这个答案,它似乎起了作用!所以这个解决方案基本上是有效的。问题是当SIP出现时,第一个可聚焦的编辑框总是被选中。如果我尝试选择的编辑框不是第一个可聚焦的编辑框,则会出现问题。我还在努力想办法抓住这个机会,这让我的处境与我的处境相似。有没有一种方法可以将视图的焦点顺序设置为第一,即使它不是布局中的第一个?我不知道为什么所有其他答案都建议在子体之前使用
Afterfounders
是唯一一个为我工作的,而且在文档方面也非常有意义。非常感谢,让我想,为什么android不能自动完成这项工作,或者在studio中提供提示?同样,这个问题很常见,但在我们的应用程序中没有得到认可attention@AbhishekMathurstudio并不认为此视图用于ListView/RecycleService,我同意。我尝试了一切方法来修复
ListView
EditText
的行为,但没有任何效果。我迁移到使用
RecyclerView
(请参阅),这一切都像做梦一样工作,没有令人讨厌的黑客攻击。迁移很容易,因为我已经在
ListView
适配器中使用了
ViewHolder
模型。