[英]disable touch events of RecyclerView (to prevent user touches)?
我的應用程序中有一個 RecyclerView,它顯示數據。 我想禁用 RecyclerView 的用戶觸摸事件。 我已經嘗試了下面的代碼,但它不起作用。
recyclerView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return false;
}
});
請幫幫我。
因為幾天前我有一個類似的用例並且剛剛偶然發現了這個問題:
你可以添加
到您的 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()
進行后台工作時,我消耗了觸摸事件。
你可以使用 RecyclerView 函數public void setLayoutFrozen(boolean frozen)
爪哇:
recyclerView.addOnItemTouchListener(new RecyclerView.SimpleOnItemTouchListener() {
@Override
public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
return true;
}
});
科特林:
recyclerView.addOnItemTouchListener(object : RecyclerView.SimpleOnItemTouchListener() {
override fun onInterceptTouchEvent(rv: RecyclerView, e: MotionEvent): Boolean {
return true
}
})
就用這個,解決我的問題(;
如果返回true
觸摸事件被禁用。
如果啟用返回false
觸摸事件。
recyclerView.addOnItemTouchListener(new RecyclerView.SimpleOnItemTouchListener() {
@Override
public boolean onInterceptTouchEvent(RecyclerView view, MotionEvent e) {
return true;
}
});
希望它有幫助..
您可以使用yourRecyclerView.suppressLayout(true)
禁用用戶交互
您可以覆蓋 LinearLayoutManager canScrollHorizontally
方法
getRecyclerView().setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false) {
@Override
public boolean canScrollHorizontally() {
return false;
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.