RecyclerView 上的波纹效果在轻按时不起作用

2023-11-26

我尝试在 RecyclerView 上实现连锁反应。这是我的布局:

<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:card_view="http://schemas.android.com/apk/res-auto"
        android:id="@+id/card"
        android:layout_marginTop="7dp"
        android:layout_marginLeft="16dp"
        android:layout_marginRight="16dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        card_view:cardCornerRadius="5dp"
        android:clickable="true"
        card_view:cardElevation="5dp"
        android:focusable="true"
        android:foreground="?android:attr/selectableItemBackground">

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:padding="16dp">

                <TextView
                    //some properties />

                <TextView
                    //some properties />

                <TextView
                    //some properties />
            </LinearLayout>

    </android.support.v7.widget.CardView>

为了实现 onclick 侦听器,我基本上遵循了本教程:http://sapandiwakar.in/recycler-view-item-click-handler/

问题是连锁反应是由以下几行产生的:

android:clickable="true"
android:focusable="true"
android:foreground="?android:attr/selectableItemBackground"

不适用于轻(也就是说快速)按压。当我快速点击屏幕时,就会触发点击侦听器。这意味着已检测到触摸事件,但没有显示涟漪效应。如果我想看到涟漪效果,我必须在释放压力之前在屏幕上保持更长的时间。

有没有办法纠正这种行为,即使快速按下也会产生连锁反应?


我遇到了类似的问题。我在 RecyclerView 上有一个 ItemClickListener,在该侦听器中我正在推送一个新片段。通过反复试验,我注意到删除或清空项目单击侦听器每次都会显示突出显示,即使是轻按也是如此。

修复方法是更改​​我的 onItemClick 方法:

@Override
public void onItemClick(final RecyclerView parent, final View view, final int position, final long id)
{
    ViewCompat.postOnAnimationDelayed(parent, new Runnable()
    {
        @Override
        public void run()
        {
            // Your click code goes here
        }
    }, 50);
}

这会将您的单击操作推迟到下一个动画步骤后 50 毫秒,并在执行单击操作之前为动画提供足够的时间来加载和运行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RecyclerView 上的波纹效果在轻按时不起作用 的相关文章