我正在尝试为 ImageButton 实现涟漪效果,我在背景中设置了涟漪,并在 src 中为其设置了可绘制图像。
android:background="@drawable/myripplexml"
android:src="@drawable/myimagepath"
它在按钮布局内提供了很好的涟漪效果。但我希望涟漪效果也延伸到按钮布局之外。另一种方法是使用 :
android:background="?android:attr/selectableItemBackgroundBorderless"
但它使用默认颜色和样式。如何自定义颜色、形状和尺寸?
我遇到了这个问题,我的问题是"可选项目背景无边框"创建了一个矩形,而我的按钮是圆形的。 我不确定这是否回答了原始问题,但这是我发现的:在 drawable-v21 中为此设置背景
<ripple
xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?android:colorControlHighlight">
<item android:id="@android:id/mask">
<shape android:shape="oval">
<solid android:color="?android:colorAccent" />
</shape>
</item>
</ripple>
并在较低的 API 级别@null(假设你使用的是实际图像按钮 SRC 的选择器)。 在按钮的填充中最明显的波纹。 如果根本没有遮罩层,涟漪是未绑定的,有点占据整个屏幕。 你可以使用任何你想要的形状,如果不是圆形。
如果您像我一样懒惰,请使用默认的纹波币,忘记向后兼容性。基本上,您可以向视图添加两种类型的背景波纹:
?android:selectableItemBackground // Ripple within view
?android:selectableItemBackgroundBorderless //Ripple outside view
不幸的是,这些涟漪总是灰色的。要根据您的主题调整这些内容,请转到您的父主题并更改颜色控制突出显示。
在应用的主题中:
<item name="colorControlHighlight">#1bff3a</item>
此值将更改默认波纹的颜色。
注意:在低于 21 的设备上,纹波将变成与您设置的颜色相同的 notmal 选择器。
就像@alan在他的评论中提到的那样。如果您创建一个没有遮罩和子项目的波纹项目并将其添加为视图背景,则波纹将绘制在第一个可用的父项之上,并可能扩展视图边界。文档中提到了这一点
<!-- An unbounded red ripple. --/>
<ripple android:color="#ffff0000" />