web-dev-qa-db-ja.com

Recyclerviewアイテムのクリックリップル効果

Ripple EffectをRecyclerViewのアイテムに追加しようとしています。オンラインで見てみましたが、必要なものが見つかりませんでした。 Android:background属性をRecyclerView自体に試し、"?android:selectableItemBackground"に設定しましたが、機能しませんでした。

私の親のレイアウトはこのようなものです

<LinearLayout
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:padding="10dp">

    <Android.support.v7.widget.RecyclerView
        Android:id="@+id/dailyTaskList"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:clickable="true"
        Android:focusable="true"
        Android:scrollbars="vertical" />
</LinearLayout>

アダプターのテンプレートを以下に示します

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:custom="http://schemas.Android.com/apk/res-auto"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:orientation="vertical">

        <LinearLayout
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:orientation="vertical"
            Android:padding="5dp">

            <TextView
                Android:id="@+id/txtTitle"
                style="@style/kaho_panel_sub_heading_textview_style"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content" />

            <TextView
                Android:id="@+id/txtDate"
                style="@style/kaho_content_small_textview_style"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content" />

    </LinearLayout>
</LinearLayout>

ソリューションを教えてください

14
Karthik Thunga

Android:background="?attr/selectableItemBackground"をアイテムレイアウトの一番上の親に追加すると、うまくいくはずです。ただし、場合によってはアニメーションが見逃され、Android:clickable="true"を追加しても見逃されます。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:background="?attr/selectableItemBackground"
    Android:orientation="vertical">

    <LinearLayout
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:orientation="vertical"
        Android:padding="5dp">

        <TextView
            Android:id="@+id/txtTitle"
            style="@style/kaho_panel_sub_heading_textview_style"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content" />

        <TextView
            Android:id="@+id/txtDate"
            style="@style/kaho_content_small_textview_style"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content" />

    </LinearLayout>
</LinearLayout>
41
Joaquim Ley

RecyclerView Item Parentで、追加

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

以下のように:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:custom="http://schemas.Android.com/apk/res-auto"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:background="?android:attr/selectableItemBackground"
    Android:orientation="vertical">

        <LinearLayout
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:orientation="vertical"
            Android:padding="5dp">

            <TextView
                Android:id="@+id/txtTitle"
                style="@style/kaho_panel_sub_heading_textview_style"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content" />

            <TextView
                Android:id="@+id/txtDate"
                style="@style/kaho_content_small_textview_style"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content" />


    </LinearLayout>

</LinearLayout>
3