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

时间:2016-04-23 09:29:34

标签: android android-recyclerview

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

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

请帮帮我。

6 个答案:

答案 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;
   }
});

只需使用此功能,即可解决我的所有问题(;