android 如何禁用和启用recyclerview滚动

pkbketx9  于 2023-04-10  发布在  Android
关注(0)|答案(3)|浏览(244)

我想在横向模式下禁用recyclerview滚动,在纵向模式下启用它。

recyclerView.addOnItemTouchListener(new RecyclerView.SimpleOnItemTouchListener() {
        @Override
        public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
            // Stop only scrolling.
            return rv.getScrollState() == RecyclerView.SCROLL_STATE_DRAGGING;
        }
    });

我正在使用此方法禁用滚动,但无法找到再次启用它的方法。
感谢您的任何帮助!

db2dz4w8

db2dz4w81#

你必须使用自定义的RecyclerView来完成它。当用户处于横向模式时,以编程方式初始化它,并将此视图添加到布局中:

public class MyRecycler extends RecyclerView {

    private boolean verticleScrollingEnabled = true;

    public void enableVersticleScroll (boolean enabled) {
        verticleScrollingEnabled = enabled;
    }

    public boolean isVerticleScrollingEnabled() {
        return verticleScrollingEnabled;
    }

    @Override
    public int computeVerticalScrollRange() {

        if (isVerticleScrollingEnabled())
            return super.computeVerticalScrollRange();
        return 0;
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent e) {

        if(isVerticleScrollingEnabled())
            return super.onInterceptTouchEvent(e);
        return false;

    }

    public MyRecycler(Context context) {
        super(context);
    }

    public MyRecycler(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    public MyRecycler(Context context, @Nullable AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }
}

对于纵向模式,请继续使用正常的RecyclerView

nbnkbykc

nbnkbykc2#

对于这个问题,我使用这个一行解决方案!:)

myRecyclerView.isNestedScrollingEnabled = false
juud5qan

juud5qan3#

在我的例子中,我手动删除和添加OnScrollListener:

recyclerView.removeOnScrollListener(this);

相关问题