当前位置: 首页 > 知识库问答 >
问题:

将涟漪效果设置为RecycerView CardView项,而不必为项操作双击

侯池暝
2023-03-14

我有一个RecycerView,其中有一个CardView作为行项布局的根元素。我设法使用下面的列表项布局对CardView产生了连锁反应,如下所述。

<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="@dimen/margin_8dp"
    android:background="?android:attr/selectableItemBackground"
    android:clickable="true"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:foreground="?android:attr/selectableItemBackground"
    app:cardBackgroundColor="@color/cyan"
    app:cardCornerRadius="20dp"
    app:cardElevation="5dp">

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/transparent"
        android:padding="@dimen/margin_8dp">

            <!-- Underlying views-->

    </androidx.constraintlayout.widget.ConstraintLayout>

</androidx.cardview.widget.CardView>

类似的事情使用按钮样式在这里。

在视图保持器的RecycerView适配器中,我有一个跨国itemView单击侦听器

class ViewHolder extends RecyclerView.ViewHolder {

    ViewHolder(@NonNull final View itemView) {
        super(itemView);

        itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });
     }
}

共有1个答案

宗政子辰
2023-03-14

view.onClickListener替换为view.onFocusChangeListener,当行项被单击后获得焦点时,我将运行与onClick回调中相同的代码。

但这并没有给连锁反应一个出现的机会,所以发布了一些延迟。

itemView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if (hasFocus)
            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    // Do whatever done in onClick()
                }
            }, 10); // delay to give the ripple effect a chance to show
    }

});

我希望如果有另一个解决方案没有任何拖延。

 类似资料:
  • 我正在尝试将涟漪效果添加到RecyclerView的项目中。我上网看了一下,但找不到我需要的东西。我想这应该是一个自定义效果。我尝试了rodroid:background属性到RecyclerView本身,并将其设置为“?android:selectableitembackground”,但它不起作用。: 这是我试图添加效果的RecyclerView:

  • 最小SDK为21。当我点击回收器适配器中的cardview时,不会产生连锁反应,只会进入下一个屏幕。recyclerview位于片段内部。 适配器代码,其中我对每个项目进行了onClick。

  • 我有一个,它扩展了以下网格项: 但是涟漪效应不会出现,除非我将可见性设置为不可见。似乎涟漪效应是在下方绘制的。如何在上绘制?

  • 我想在我的应用程序中使用水波涟漪效果,这种效果会在触摸区域反复出现,我已经访问了站点中可用的示例代码,但涟漪似乎被像素化了。 谁能帮我,实现活水涟漪效应?。我发现很难实施它。

  • 我一直在为Lollipop(API 21)开发一个应用程序。 XML:

  • 第一次在这里问问题,让我们看看... 我在以编程方式在CardView上设置涟漪效应时遇到了麻烦。(但我希望找到一种基本适用于任何视图的方法)问题是,我的卡片是这样编程制作的: 现在,正如您所看到的,我使用前景属性进行了尝试,基于在这里可以找到的类似问题的答案。 **更新:**卡片在Android 5之前的代码中变得不可见。