Android带有背景的水波纹按钮

5

我使用XML在Android 5.0中成功创建了一个涟漪按钮。我的代码如下:

<?xml version="1.0" encoding="utf-8"?>
<!-- the flat button to be used in app -->
<!-- define the ripple -->
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="?android:colorControlHighlight">
    <!-- the ripple object -->
    <item android:id="@android:id/mask">
        <!-- button shape (w/ radius) -->
        <shape android:shape="rectangle">
            <!-- radius of vertices -->
            <corners
                android:topLeftRadius="7dp"
                android:topRightRadius="7dp"
                android:bottomLeftRadius="7dp"
                android:bottomRightRadius="7dp" />
            <!-- color accent (not working) -->
            <solid android:color="?android:colorAccent" />
        </shape>
    </item>
</ripple>

我有一个按钮的问题:按钮的背景颜色无法改变。我也尝试了以下方法:

<solid android:color="#0000ff" />

背景仍然保持透明(colorAccent也不起作用)。

如果不通过,我应该如何设置矩形(按钮)的背景为蓝色?

<solid/>

属性?

谢谢


1
阅读RippleDrawable的文档。遮罩层未被绘制。从<item>标签中删除android:id属性。 - alanv
1个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
7

使用@android:id/mask标识符将层设置为蒙版,仅用于剪切边界,不会绘制。删除id属性应该可以得到您想要的效果。此外,如果所有角落的半径都相同,您可以直接使用android:radius属性。

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
        android:color="?android:attr/colorControlHighlight">
    <item>
        <shape android:shape="rectangle">
            <corners android:radius="7dp" />
            <solid android:color="?android:attr/colorAccent" />
        </shape>
    </item>
</ripple>

然而,如果为实心使用透明颜色(这在使用不透明颜色绘制描边时很常见 - 如绘制轮廓形状),则涟漪效果不会显示。 - Mark

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,