问题
Since API 24, the RecyclerView
will auto scroll to a item which is displayed in partial by the user click the item.
How to disable this feature?
The codes below works before 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);
}
It has to be focusable and clickable, because it's a TextView
and the text needs to be selectable.
回答1:
Set an overriden version of the layout manager on recycler view. In my case I wanted to disable for when a certain child view was focused e.g.
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);
}
};
来源:https://stackoverflow.com/questions/43182601/android-how-to-disable-recyclerview-auto-scroll-from-clicking