android:background="?android:selectableItemBackground"
这个属性可以设置为水波纹效果,如果此时还需要设置背景色,以前都是再嵌套一层布局 设置 android:background="@color/color_white
,显然不是最优解。
那如何在有背景颜色的情况下设置水波纹效果,见代码
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="#fff" />
</shape>
</item>
<item android:drawable="?attr/selectableItemBackground" />
</layer-list>
第一个item自定义背景,想要什么背景,自己写
第二个item设置为水波纹效果
然后使用layer-list将两个item合并,这种方式只能在5.0以上用,或者drawable-v21里用这个,再写一个同名的xml,像下面一种方式
另一种方式
drawable-v21中white_ripple.xml
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/base_ripple">
<!--去掉此item内容就是无界效果-->
<item>
<shape>
<!-- 中间的背景色-->
<solid android:color="@color/color_white" />
</shape>
</item>
</ripple>
drawable中white_ripple.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:drawable="@color/base_ripple" ></item>
<item android:state_selected="true" android:drawable = "@color/base_ripple"/>
<item android:state_pressed="true" android:drawable="@color/base_ripple"></item>
<item android:drawable="@color/color_white" ></item>
</selector>
另:
1.设置前景的水波纹点击效果
android:foreground="?android:selectableItemBackground"
2.水波纹改色
在主题中进行配置代码
<item name="colorControlHighlight">@color/accent_material_light</item>
3.需要给控件设置可点击