2017-07-21 89 views
2

我有一个RecyclerView其中有EditText作为其列表项。当我滚动RecyclerView时,EditText失去焦点,当项目熄灭屏幕。因此,滚动时回到屏幕上的焦点不会保留在EditText上。EditText失去对RecyclerView的滚动重点

我想让焦点留在同一个项目上。为此,我还尝试将该项目的position存储在焦点上,并重新指定onBindViewHolder的焦点。但是这减慢了滚动。

我也试过这个ListView但是还有另一种focus的相关问题。焦点跳到那里。

已经在SO上搜索过这个地段,并且Google搜索了很多。但总是找到像android:focusableInTouchMode="true"android:descendantFocusability="afterDescendants"这样的答案,这是行不通的。

任何帮助将不胜感激。

回答

5

RecyclerView的全部重点是重用视图,以便手机不必一次将所有行保存在内存中,不必一直销毁并创建视图。当您的EditText离开屏幕时,手机将采用该视图,重置其内容并将其移动到传入视图堆栈的底部。

RecyclerView diagram

这意味着,一旦你EditText离开屏幕就不再存在。它不能保持焦点,因为它从布局中移除。

解决这个问题的唯一方法就是您提到的存储位置,检查屏幕位置何时出现以及手动还原焦点。