简体   繁体   English

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

[英]disable touch events of RecyclerView (to prevent user touches)?

I have a RecyclerView in my app and it displays data.我的应用程序中有一个 RecyclerView,它显示数据。 I want to disable user touch events of RecyclerView.我想禁用 RecyclerView 的用户触摸事件。 I have tried the below code but it does not work.我已经尝试了下面的代码,但它不起作用。

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

Please help me.请帮帮我。

As I had a similar use case a few days ago and stumbled upon this question just now:因为几天前我有一个类似的用例并且刚刚偶然发现了这个问题:
you can add either你可以添加

to your RecyclerView.到您的 RecyclerView。

Example using RecyclerView.SimpleOnItemTouchListener :使用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;
   }
});

I consumed the touch event while my SwipeRefreshLayout was doing background work by querying swipeLayout.isRefreshing() .当我的SwipeRefreshLayout通过查询swipeLayout.isRefreshing()进行后台工作时,我消耗了触摸事件。

你可以使用 RecyclerView 函数public void setLayoutFrozen(boolean frozen)

Java:爪哇:

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

Kotlin:科特林:

recyclerView.addOnItemTouchListener(object : RecyclerView.SimpleOnItemTouchListener() {
    override fun onInterceptTouchEvent(rv: RecyclerView, e: MotionEvent): Boolean {
        return true
    }
})

Just use this, fixed my problems (;就用这个,解决我的问题(;

If you return true touch events are disabled.如果返回true触摸事件被禁用。

if Return false touch events are enable.如果启用返回false触摸事件。

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

hope it helps..希望它有帮助..

您可以使用yourRecyclerView.suppressLayout(true)禁用用户交互

You can override the LinearLayoutManager canScrollHorizontally method您可以覆盖 LinearLayoutManager canScrollHorizontally方法

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM