我的应用程序中有一个RecyclerView,它显示数据。我想禁用RecyclerView的用户触摸事件。我尝试了下面的代码,但它不起作用。
recyclerView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return false;
}
});
请帮帮我。
答案 0 :(得分: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()
进行后台工作时消耗了触摸事件。
答案 1 :(得分:7)
您可以使用RecyclerView功能
public void setLayoutFrozen(boolean frozen)
答案 2 :(得分:4)
您可以使用def reverse(str1):
if str1 ==''
return str1
else:
return str1[-1]+reverse[:-1]
def main():
str1 = input ('Enter string')
result = reverse(str1)
print ('Reverse of string is ', result)
if __name__=='__main__':
main()
禁用用户交互
答案 3 :(得分:1)
如果您返回true
,则触摸事件将被禁用。
如果启用了返回false
触摸事件。
recyclerView.addOnItemTouchListener(new RecyclerView.SimpleOnItemTouchListener() {
@Override
public boolean onInterceptTouchEvent(RecyclerView view, MotionEvent e) {
return true;
}
});
希望有帮助。
答案 4 :(得分:0)
您可以覆盖LinearLayoutManager canScrollHorizontally
方法
getRecyclerView().setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false) {
@Override
public boolean canScrollHorizontally() {
return false;
}
});
答案 5 :(得分:0)
recyclerView.addOnItemTouchListener(new RecyclerView.SimpleOnItemTouchListener() {
@Override
public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
return true;
}
});
只需使用此功能,即可解决我的所有问题(;