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

6 android android-recyclerview

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

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

请帮我.

小智 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;
   }
});
Run Code Online (Sandbox Code Playgroud)

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


小智 8

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


Afi*_* EM 8

爪哇:

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

科特林:

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

就用这个,解决我的问题(;

  • 这不会阻止触摸,在 Android Q 上进行测试。我以编程方式设置平滑滚动,然后在滚动时触摸,它就会停止。 (2认同)

Jay*_*ola 5

如果返回true 触摸事件被禁用。

如果false启用返回触摸事件。

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

希望能帮助到你..


Zah*_*hid 5

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