为什么涟漪效应会消除我的原始背景?

Nil*_*zor 8 android material-design

所以我试图用cusotm颜色创建一个涟漪效果,并且有一些成功,除了涟漪效果去除了原始背景,因此创造了一个半透明的涟漪效果,这不是我想要的.

布局:

    <Button
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:text="Clicky"
        android:colorControlHighlight="@android:color/holo_blue_light"
        android:background="@drawable/selector">
    </Button>
Run Code Online (Sandbox Code Playgroud)

绘制/ selector.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@drawable/ripple"/>
    <item android:drawable="@color/normal"/>
</selector>
Run Code Online (Sandbox Code Playgroud)

绘制/ ripple.xml:

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
        android:color="#7f7">
</ripple>
Run Code Online (Sandbox Code Playgroud)

color.xml

<resources>
    <color name="normal">#070</color>
</resources>
Run Code Online (Sandbox Code Playgroud)

在涟漪效应重叠时,我该怎么做才能保持绿色(#070)背景?我相信这是意图,对吗?

编辑

我现在已经shape按照AcademicDuck的建议介绍了一个:

绘制/ red_shape.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"     android:shape="rectangle">
    <solid android:color="@color/normal" />
</shape>
Run Code Online (Sandbox Code Playgroud)

此形状由现在修改的波纹引用:

绘制/ ripple.xml:

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
        android:drawaleb="@drawable/red_shape">
</ripple>
Run Code Online (Sandbox Code Playgroud)

现在有什么变化,当我按下背景是纯红色而不是透明.尽管如此,仍然没有波纹.

小智 0

如果没有在波纹标签上设置子项,Android 波纹效果将绘制在当前背景的顶部。在ripple标签内,指定一个<item android:drawable = "@drawble/yourBackground">. 并使“yourBackground”成为一个矩形可绘制资源,其背景颜色与按钮相同 - #070。