停止RecyclerView的滑动

为解决弹出dialog时RecyclerView仍能滑动的问题,本文介绍了一种自定义CustomLinearLayoutManager的方法,通过重写canScrollHorizontally()或canScrollVertically()函数,实现在dialog弹出时控制RecyclerView的滑动状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在近期项目中出现了一个弹出dialog还能滑动RecyclerView的现象。为了消除这类现象所以要在弹出dialog后停止RecyclerView的滑动。

解决步骤如下:
  1. 自定义一个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();
        }
    }
    
  2. RecyclerView使用自定义的CustomLinearLayoutManager;

    linearLayoutManager = new CustomLinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false);
    recyclerViewRobots.setLayoutManager(linearLayoutManager);
    
  3. 调用CustomLinearLayoutManager.setScrollEnabled();

    linearLayoutManager.setScrollEnabled( false );//停止滑动
    linearLayoutManager.setScrollEnabled( true);//开启滑动
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值