【问题标题】:Prevent a RecyclerView inside CardView from intercepting touch防止 CardView 中的 RecyclerView 拦截触摸
【发布时间】:2019-04-17 19:47:10
【问题描述】:

我在 MaterialCardView 中有一个 RecyclerView,而这张卡片有很多其他视图。

RecyclerView 项目不可点击,唯一目的是显示列表中的一些数据。当我单击 MaterialCardView 时,我必须导航到另一个屏幕。如果我触摸 RecyclerView 区域以外的任何地方,就会出现涟漪效应并导航到另一个屏幕。但是,如果我单击 RecyclerView,则什么也不会发生。

我怀疑视图正在拦截触摸事件,阻止卡片消耗点击,但找不到使其工作的方法。

相对于我尝试过的 RecyclerView:

recyclerView.setOnCLickListener(v -> card.callOnClick())
recyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
            @Override
            public boolean onInterceptTouchEvent(@NonNull RecyclerView rv, @NonNull MotionEvent e) {
                if (e.getAction() == MotionEvent.ACTION_DOWN) {
                    card.callOnClick();
                }
                return false;
            }

            @Override
            public void onTouchEvent(@NonNull RecyclerView rv, @NonNull MotionEvent e) {
            }

            @Override
            public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {

            }
        });

如果我在 'onItemTouchListener' 中调用 'card.callOnClick()' 或 'card.performClick()' 可以正常工作,但不会发生涟漪效应,这看起来不像是自然点击。

我希望 RecyclerView 不拦截点击/触摸并让父卡处理这些事件。

【问题讨论】:

    标签: android android-recyclerview onclicklistener android-cardview materialcardview


    【解决方案1】:

    在更新适配器数据后,我设法通过使用recyclerView.setLayoutFrozen(true) 实现了所需的行为。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-02
      • 1970-01-01
      • 1970-01-01
      • 2016-07-17
      相关资源
      最近更新 更多