Android涟漪效应与imageView/GIF重叠

Android涟漪效应与imageView/GIF重叠,android,imageview,ripple,Android,Imageview,Ripple,我在循环视图中有一个列表项,我想在整个元素上获得涟漪效果-目前我的GIF与涟漪重叠。我不知道如何解决这个问题,在研究后已经尝试了很多方法,但都没有效果 下面是我构建每个列表项所基于的特定XML文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_p

我在循环视图中有一个列表项,我想在整个元素上获得涟漪效果-目前我的GIF与涟漪重叠。我不知道如何解决这个问题,在研究后已经尝试了很多方法,但都没有效果

下面是我构建每个列表项所基于的特定XML文件

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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="@drawable/selector"
android:clickable="false">

<pl.droidsonroids.gif.GifTextView
    android:layout_width="84dp"
    android:layout_height="84dp"
    android:paddingTop="3dp"
    android:paddingBottom="3dp"
    android:paddingRight="1dp"
    android:paddingLeft="1dp"
    android:background="@drawable/a_present_for_you"
    />

<TextView
    android:id="@+id/textView"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:textColor="@color/black"
    android:textSize="16sp"
    android:gravity="center_vertical"
    android:drawableRight="@drawable/ic_lock_open_blue_24dp"
    android:drawablePadding="16dp">
</TextView>

</LinearLayout>


有什么想法吗?

涟漪效应不会传播,因为你在同一直线布局中有两个不同的背景。您可以尝试将涟漪效应设置为整个线性布局。

涟漪效应不会传播,因为在同一线性布局中有两个不同的背景。您可以尝试将连锁反应设置为整个线性布局。

使用
FrameLayout
如何?使用
FrameLayout
而不是
LinearLayout
包装这两个元素,并使用自定义选择器设置此布局的
android:foreground

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

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:foreground="@drawable/selector">

<pl.droidsonroids.gif.GifTextView
android:layout_width="84dp"
android:layout_height="84dp"
android:paddingTop="3dp"
android:paddingBottom="3dp"
android:paddingRight="1dp"
android:paddingLeft="1dp"
android:background="@drawable/a_present_for_you"
/>

<TextView
android:id="@+id/textView"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:textColor="@color/black"
android:textSize="16sp"
android:gravity="center_vertical"
android:drawableRight="@drawable/ic_lock_open_blue_24dp"
android:drawablePadding="16dp">
</TextView>

</FrameLayout>

使用
框架布局如何?使用
FrameLayout
而不是
LinearLayout
包装这两个元素,并使用自定义选择器设置此布局的
android:foreground

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

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:foreground="@drawable/selector">

<pl.droidsonroids.gif.GifTextView
android:layout_width="84dp"
android:layout_height="84dp"
android:paddingTop="3dp"
android:paddingBottom="3dp"
android:paddingRight="1dp"
android:paddingLeft="1dp"
android:background="@drawable/a_present_for_you"
/>

<TextView
android:id="@+id/textView"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:textColor="@color/black"
android:textSize="16sp"
android:gravity="center_vertical"
android:drawableRight="@drawable/ic_lock_open_blue_24dp"
android:drawablePadding="16dp">
</TextView>

</FrameLayout>

只需使用以下属性:-

android:background=“?attr/selectableItemBackground”
对于简单的涟漪效应。 用于圆形波纹效应
android:background=“?attr/selectableitemsbackgroundless”


在主根目录中。

只需使用以下属性:-

android:background=“?attr/selectableItemBackground”
对于简单的涟漪效应。 用于圆形波纹效应
android:background=“?attr/selectableitemsbackgroundless”


在主根中。

是的,我认为这就是问题所在,但我无法以不同的方式显示gif。用
android:drawableLeft=“@drawable/a\u present\u for\u you”
代替了
android:background=“@drawable/a\u present\u for\u you”
,但仍然重叠。把它设置为整个线性布局,你到底是什么意思?我想我已经通过在顶部设置了
android:background=“@drawable/selector”
试着在你的线性布局中设置
android:clickable=“true”
。是的,我想这就是问题所在,但我无法以不同的方式显示gif。用
android:drawableLeft=“@drawable/a\u present\u for\u you”
代替了
android:background=“@drawable/a\u present\u for\u you”
,但仍然重叠。您将其设置为整个线性布局的确切含义是什么?我想我已经通过在顶部设置了
android:background=“@drawable/selector”
尝试在线性布局中设置
android:clickable=“true”
,刚刚测试过,效果很好!但最后我还是选择了让gif与涟漪重叠的方式,因为我意识到它在正确的环境下看起来非常棒。刚刚测试过,效果非常好!但最后我还是选择了让gif与涟漪重叠的方式,因为我意识到它在正确的环境下看起来非常棒。