禁用RecyclerView的触摸事件(以防止用户触摸)?

问题描述 投票:6回答:4

我的应用程序中有一个RecyclerView,它显示数据。我想禁用RecyclerView的用户触摸事件。我尝试了下面的代码,但它不起作用。

recyclerView.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        return false;
    }
});

请帮我。

android android-recyclerview
4个回答
12
投票

几天前我有一个类似的用例,刚才发现了这个问题: 你也可以添加

到您的RecyclerView。

使用RecyclerView.SimpleOnItemTouchListener的示例:

recyclerView.addOnItemTouchListener(new RecyclerView.SimpleOnItemTouchListener() {
    @Override
    public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
        // true: consume touch event
        // false: dispatch touch event
        return true;
   }
});

当我的SwipeRefreshLayout通过查询swipeLayout.isRefreshing()做背景工作时,我消耗了触摸事件。


7
投票

你可以使用RecyclerView功能 public void setLayoutFrozen(boolean frozen)


0
投票

您可以覆盖LinearLayoutManager canScrollHorizontally方法

getRecyclerView().setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false) {
    @Override
    public boolean canScrollHorizontally() {
        return false;
    }
});

0
投票
recyclerView.addOnItemTouchListener(new RecyclerView.SimpleOnItemTouchListener() {
    @Override
    public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
        return true;
   }
});

只要用它,修复我的所有问题(;

© www.soinside.com 2019 - 2024. All rights reserved.