1

要素ListViewを使用して、内部の各アイテムに波及効果を実装しました。<ripple>の各項目をタッチ(選択)すると、希望の波及効果が得られましたListView。しかし、スクロールしてListViewアイテムを再度選択すると、リップルは非常に速く消えます (ほとんど目立ちません)。ListView波紋が一部のアイテムではきれいに表示され、一部のアイテムでは非常に奇妙に 表示される理由はわかりません。

カスタマイズしたリップル レイアウトを以下に示します (ripple_background.xml)。

<ripple
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/light_black_overlay">
    <item>
        <shape
            android:shape="rectangle">
            <solid android:color="@android:color/background_light" />
        </shape>
    </item>
</ripple>

中のアイテムのレイアウトListView

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginTop="48dp"
    android:minHeight="?android:listPreferredItemHeight"
    android:orientation="horizontal"
    android:background="@drawable/ripple_background"> <!--My ripple layout-->

    <TextView
        android:id="@+id/someText
        android... />

    <ImageView
        android:id="@+id/someImage
        android... />

</RelativeLayout>

あなたの内部でこの種の奇妙な波及効果に直面した人はいますListViewか? ListView のリサイクル メカニズムがこれで何かをしなければならないかどうか、何か考えはありますか? ありがとうございました。

4

1 に答える 1

1

リストの各項目に波及効果を渡す代わりに、次のことを試してください。

<ListView
        android:id="@+id/yourListView"
        ...
        android:listSelector="@drawable/ripple_background" />
于 2015-08-19T18:29:31.863 に答える