触摸布局时,如何在简单的线性/相对布局中产生波纹效果?
我尝试将布局的背景设置为类似以下内容:
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?android:colorControlHighlight" >
<item android:drawable="@android:color/white"/>
</ripple>
但是,在触摸版面时,我只会看到纯白色的背景并且没有波纹效果。我究竟做错了什么?
编辑:
供引用,这是我的布局xml文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="250dp"
android:layout_height="250dp"
android:background="@drawable/test"
android:clickable="true">
</RelativeLayout>
最佳答案
在布局上设置以下属性(如果您的布局具有默认的白色/浅色背景):
android:clickable="true"
android:focusable="true"
android:background="?attr/selectableItemBackground"
在这种情况下,您不需要自定义可绘制对象。
但是,如果您的布局具有黑色/深色背景,则必须创建自己的波纹可绘制对象,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<!-- An white rectangle ripple. -->
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@android:color/white">
<item
android:id="@android:id/mask"
android:gravity="center">
<shape android:shape="rectangle">
<solid android:color="@android:color/white"/>
</shape>
</item>
</ripple>
然后将此涟漪可绘制对象设置为 android:background 属性。
您可以在AOSP中看到许多此类波动的示例:in here