私の問題を説明するために、私は小さな例を作成しました。
Imageviewとtextviewを備えたlinearlayoutがあります。 linearlayoutの場合、背景としてリップルドローアブルを設定しました。しかし、linearlayoutをクリックまたはロングクリックすると、リップルアニメーションがimageviewの下に表示されます。 imageview上でアニメーションをどのように表示しますか?
main.xml
<?xml version="1.0" encoding="utf-8"?>
<Android.support.constraint.ConstraintLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/activity_main"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<LinearLayout
Android:id="@+id/linear"
Android:layout_width="200dp"
Android:layout_height="200dp"
Android:background="@drawable/ripple"
Android:clickable="true"
Android:orientation="vertical">
<ImageView
Android:layout_width="match_parent"
Android:layout_height="100dp"
Android:src="@mipmap/index" />
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="This is ripple test"
Android:textColor="#FF00FF00" />
</LinearLayout>
</Android.support.constraint.ConstraintLayout>
drawable-v21/ripple.xml:
<?xml version="1.0" encoding="utf-8"?>
<ripple
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:color="#FFFF0000">
<item>
<shape Android:shape="rectangle">
<solid Android:color="#FF000000"/>
</shape>
</item>
</ripple>
drawable/ripple.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">
<corners Android:radius="3dp" />
<solid Android:color="#FFFF0000" />
</shape>
</item>
<item Android:state_focused="true">
<shape Android:shape="rectangle">
<corners Android:radius="3dp" />
<solid Android:color="#FFFF0000" />
</shape>
</item>
<item>
<shape Android:shape="rectangle">
<corners Android:radius="3dp" />
<solid Android:color="#FF000000" />
</shape>
</item>
</selector>
追加 Android:background="@null"
ImageView
の場合
このようにリップルを追加します
Android:foreground="?android:attr/selectableItemBackground"