我在循环视图中有一个列表项,我希望在整个元素上获得涟漪效果 - 目前我的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>
有什么想法吗?
答案 0 :(得分:4)
如何使用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>
答案 1 :(得分:1)
只需使用以下属性: -
android:background="?attr/selectableItemBackground"
用于简单的涟漪效应。
用于圆形波纹效果使用
android:background="?attr/selectableItemBackgroundBorderless"
在主根目录内。
答案 2 :(得分:0)
由于在同一个LinearLayout中有两个不同的背景,因此Ripple效果不会传播。您可以尝试做的是将涟漪效果设置为整个LinearLayout。