在近期项目中出现了一个弹出dialog还能滑动RecyclerView的现象。为了消除这类现象所以要在弹出dialog后停止RecyclerView的滑动。
解决步骤如下:
-
自定义一个CustomLinearLayoutManager,重写canScrollHorizontally()或者canScrollVertically();
public class CustomLinearLayoutManager extends LinearLayoutManager { public static final String TAG="CustomLinearLayoutManager"; private boolean isScrollEnabled=true; public CustomLinearLayoutManager(Context context) { super( context ); } public CustomLinearLayoutManager(Context context, @RecyclerView.Orientation int orientation, boolean reverseLayout) { super( context, orientation, reverseLayout); } public void setScrollEnabled(boolean flag){ isScrollEnabled=flag; } @Override public boolean canScrollHorizontally() { return isScrollEnabled && super.canScrollHorizontally(); } }
-
RecyclerView使用自定义的CustomLinearLayoutManager;
linearLayoutManager = new CustomLinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false); recyclerViewRobots.setLayoutManager(linearLayoutManager);
-
调用CustomLinearLayoutManager.setScrollEnabled();
linearLayoutManager.setScrollEnabled( false );//停止滑动 linearLayoutManager.setScrollEnabled( true);//开启滑动