1. ホーム
  2. android

[解決済み] RecyclerViewのアイテムに波及効果を追加する

2022-07-22 23:43:13

質問

RecyclerViewのアイテムにRipple Effectを追加しようとしています。私はオンラインで見たが、私が必要とするものを見つけることができなかった。私はそれがカスタム効果でなければならないと仮定します。RecyclerView自体にandroid:background属性をつけて、android:selectableItemBackground"に設定してみたのですが、うまくいきませんでした...。

    <android.support.v7.widget.RecyclerView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:focusable="true"
    android:clickable="true"
    android:background="?android:selectableItemBackground"
    android:id="@+id/recyclerView"
    android:layout_below="@+id/tool_bar"/>

これは、効果を追加しようとしているRecyclerViewです。

どのように解決するのですか?

解りました。この属性を追加するだけでよかったんです。

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

を、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:paddingTop="8dp"
    android:paddingBottom="8dp"
    android:background="?android:attr/selectableItemBackground"
    tools:background="@drawable/bg_gradient">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="17sp"
        android:layout_marginLeft="15dp"
        android:layout_marginStart="15dp"
        android:id="@+id/shoppingListItem"
        android:hint="@string/enter_item_hint"
        android:layout_centerVertical="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"/>

    <CheckBox
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/shopping_list_item_checkbox_label"
        android:id="@+id/shoppingListCheckBox"
        android:layout_centerVertical="true"
        android:layout_marginRight="15dp"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:checked="false"/>

</RelativeLayout>

結果です。

それでも波及効果が見られない場合は、これらの行をレイアウトのルート要素にも追加してください。

android:clickable="true"
android:focusable="true"