从API 24开始,RecyclerView
将自动滚动到用户单独显示的项目,单击该项目。
如何禁用此功能?
以下代码适用于support-library 25.0.1
。
@Override
public boolean requestChildRectangleOnScreen(View child, Rect rect, boolean immediate) {
Object tag = child.getTag();
if( tag != null && tag.toString().equalsIgnoreCase("preventAutoScroll") ){
return false;
}
return super.requestChildRectangleOnScreen(child, rect, immediate);
}
它必须是可聚焦和可点击的,因为它是TextView
并且文本需要是可选择的。
答案 0 :(得分:3)
在回收站视图上设置布局管理器的覆盖版本。在我的情况下,我想禁用某个特定的子视图,例如。
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context) {
@Override
public boolean requestChildRectangleOnScreen(RecyclerView parent, View child, Rect rect, boolean immediate, boolean focusedChildVisible) {
if (((ViewGroup) child).getFocusedChild() instanceof YourFocusableChildViewClass) {
return false;
}
return super.requestChildRectangleOnScreen(parent, child, rect, immediate, focusedChildVisible);
}
};