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
模型。