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

包含ImageView的RecyclerView项上的涟漪效应

南宫建白
2023-03-14

我有一个RecyclerView,它扩展了以下网格项:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="@dimen/children_tile_border"
    android:layout_marginTop="@dimen/children_tile_border"
    android:clickable="true"
    android:focusable="true"
    android:background="?selectableItemBackground"
    tools:ignore="RtlHardcoded">

        <com.example.app.ui.widget.SquareImageView
            android:id="@+id/child_picture"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:visibility="visible"
            android:layout_alignParentBottom="true"/>

        <LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="68dp"
            android:background="@color/tile_text_background"
            android:gravity="center_vertical"
            android:layout_alignParentBottom="true">

            ..............
        </LinearLayout>
</RelativeLayout>

但是涟漪效应不会出现,除非我将SquareImageView的可见性设置为不可见。似乎涟漪效应是在SquareImageView下方绘制的。如何在SquareImageView上绘制?

共有3个答案

印成天
2023-03-14

我们可以将RecyclerView项包装在FrameLayout中,并将android:foreground属性设置为它。查看以下链接以了解详细信息。这对我很管用。

商池暝
2023-03-14

更改:

android:background="?selectableItemBackground"

致:

android:background="?android:attr/selectableItemBackground"

并将其添加到您的SquareImageView

android:clickable="false" 
洪博涛
2023-03-14

将以下代码添加到父布局

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

如果你想自定义涟漪效果添加这个ripple_custom.xml在你的绘图v21

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/colorHighlight">

    <item
        android:id="@android:id/mask"
        android:drawable="@color/windowBackground" />
</ripple>

要支持旧版本,请添加ripple\u自定义。可绘制的xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <shape android:shape="rectangle">
            <solid android:color="@color/colorHighlight" />
        </shape>
    </item>
    <item>
        <shape android:shape="rectangle">
            <solid android:color="@android:color/transparent" />
        </shape>
    </item>
</selector>
 类似资料:
  • 我正在尝试将涟漪效果添加到RecyclerView的项目中。我上网看了一下,但找不到我需要的东西。我想这应该是一个自定义效果。我尝试了rodroid:background属性到RecyclerView本身,并将其设置为“?android:selectableitembackground”,但它不起作用。: 这是我试图添加效果的RecyclerView:

  • 我正在使用及其项目作为。我将卡片视图的背景设置为。 我尝试设置,尝试将作为父级并设置其背景等,但都不起作用。 为什么会有这种行为? 编辑:CardView有一个可用的onClickListener。 编辑2:我添加了一个作为的父级。并使其可点击并为其提供可选择的项目背景。仍然没有波纹。 编辑3:我发布了我的确切布局代码结构。我没有提到数据绑定部分。但我希望这不会阻止涟漪。

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

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

  • 好的,所以我知道涟漪效应是唯一可用的Lollipop和以上。但是,当设置ImageButton时,我仍然无法获得像“常规”按钮一样的涟漪效果,只显示一个图像(和透明bg)。。。 我添加了AppCompat v7,并将第二个布局放在我的drawable/layout-v21文件夹中,该文件夹中有以下按钮: 但背景是灰色的,纹波(也是灰色的)无法定制。 所以,如果我只需要一个很好的ripple dra

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