可以创建一个定义无界纹波的RippleDrawable,同时也可以创建背景颜色? 我已经尝试了所有的东西,但是当我定义一个形状及其颜色时,波纹不再是无限的。 同样在这个页面https://developer.android.com/reference/android/graphics/drawable/RippleDrawable.html中没有关于在形状上添加无界纹波的参考。
我已尝试使用此图层列表,但结果很糟糕
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<ripple
android:color="@color/android_l_light_gray">
</ripple>
</item>
<item>
<shape
android:shape="rectangle">
<solid android:color="@color/android_l_dark_gray" />
</shape>
</item> </layer-list>
这就是我得到的
答案 0 :(得分:18)
首先请注意,layer-list
drawable与FrameLayout
类似,它会显示item
,因为如果你想让你的涟漪在前面只是向下移动< / p>
<?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="@color/android_l_dark_gray"/>
</shape>
</item>
<item>
<ripple android:color="@color/android_l_light_gray"/>
</item>
</layer-list>
产生类似
的内容
现在你注意到它被其他按钮“剪裁”了吗?它实际上是透支,这是因为绘制顺序,其他视图的背景被绘制在顶部,而不是波纹实际上被剪裁,所以我可以想到一些解决方案适合您的特定布局:
一个。摆脱layer-list
drawable并仅使用ripple
作为您的按钮背景,使用shape
或color
drawable作为ViewGroup
背景,生成:
请注意,由于你的其他背景,你失去了网格效果,但是看看棒棒糖上的其他数字键盘你会注意到他们没有网格分隔符,如果你仍然希望他们使用你的ViewGroup
画它们。
湾使用/绘制你的纹波作为foreground / overlay / drawableTop drawable,另一个作为背景,但我认为你可能会遇到类似于绘图顺序的问题。
℃。还有另外一个但我忘了,可能会像梦一样回来¯\ _(ツ)_ /¯
结帐Calculator from AOSP,您可能希望为您的网格借用CalculatorPadLayout
,或者只是了解他们是如何做到的:)
答案 1 :(得分:0)
XML
<Button
android:id="@+id/btn_key_seven"
style="@style/AppTheme.KeypadButton"
android:text="@string/str_one" />
样式
<style name="AppTheme.KeypadButton" parent="Base.Widget.AppCompat.Button.Borderless">
<item name="android:background">@drawable/button_ripple_effect_unbounded</item>
<item name="android:colorBackground">@color/colorPrimaryDark</item>
</style>
可绘制
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<ripple android:color="@color/colorPrimaryDark"/>
</item>
</layer-list>```
Working awesome for me