我有一个 RecyclerView
,它的列表项是 EditText
。当我滚动 RecyclerView
时,当项目离开屏幕时 EditText
失去焦点。因此,当 EditText
滚动回到屏幕上时,焦点不会停留在 EditText
上。
我希望焦点保持在同一项目上。为此,我还尝试将项目的 position
存储在焦点上,并在 onBindViewHolder
中重新分配焦点。但这会减慢滚动速度。
我也用 ListView
尝试过,但还有另一种与 focus
相关的问题。焦点跳到那里。
已在 SO 上搜索过此地段并在 Google 上搜索了很多。但总能找到像 android:focusableInTouchMode="true"
和 android:descendantFocusability="afterDescendants"
这样不起作用的答案。
如有任何帮助,我们将不胜感激。
最佳答案
RecyclerView
的全部意义在于重用 View ,这样手机就不必一次将所有行保存在内存中,也不必不断地销毁和创建 View .当您的 EditText
离开屏幕时,手机会获取该 View ,重置其内容并将其移动到传入 View 堆栈的底部。
这意味着一旦您的 EditText
离开屏幕,它就不再存在。它无法保持焦点,因为它已从布局中移除。
解决此问题的唯一方法就是您提到的方法,即存储位置,检查该位置何时出现在屏幕上,然后手动恢复焦点。
关于java - EditText 失去对 RecyclerView 中 Scroll 的关注,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45238973/