[英]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你可以添加
RecyclerView.SimpleOnItemTouchListener
RecyclerView.OnItemTouchListener
RecyclerView.OnItemTouchListener
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.