RecyclerView 嵌套RecyclerView 导致滚动问题

父RecyclerView 的子itemview使用了RecyclerView 展示数据,当子RecyclerView 更新时,父RecyclerView 整体会往上跳动一下。这是由于父RecyclerView 和子RecyclerView 互相争夺焦点造成的。

解决方法:
首先给父RecyclerView 所在的布局的根节点添加如下属性:

android:descendantFocusability="blocksDescendants"

descendantFocusability各个属性值的意义见:https://www.diyidaima.com/579.html

然后给父RecyclerView 添加如下属性:

android:focusable="true" 
android:focusableInTouchMode="true"

或者使用如下代码设置:

RecyclerView parentRecyclerView = findViewById(R.id.parentRecyclerView); 
parentRecyclerView.setFocusableInTouchMode(true);
parentRecyclerView.requestFocus();

最后需要在子RecyclerView 设置如下属性:

android:overScrollMode="never" 
android:focusable="false" 
android:focusableInTouchMode="false"

或者使用如下代码设置:

childRecyclerView.setFocusableInTouchMode(false); 
childRecyclerView.requestFocus();

至此,完成!!!

发表回复

后才能评论