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

时间:2014-11-13 12:02:10

标签: 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>

抽拉/ 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>

抽拉/ ripple.xml:

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
        android:color="#7f7">
</ripple>

color.xml

<resources>
    <color name="normal">#070</color>
</resources>

在涟漪效应重叠时,如何保持绿色(#070)背景,我该怎么办?我相信这是意图,对吧?

修改

我现在按照AcademicDuck的建议引入shape

抽拉/ 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>

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

抽拉/ 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>

现在有什么变化,当我按下背景时是纯红色而不是透明。但仍然没有涟漪。

2 个答案:

答案 0 :(得分:1)

为了使用您的自定义drawable,您需要在ripple drawable中指定它(RippleDrawable):

<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/yourRippleColor">
    <item android:drawable="@drawable/yourDrawable" />
</ripple>

此外,还值得检查以下问题:Android L's Ripple Effect - Touch Feedback for Buttons - Using XMLandroid ripple button with background

答案 1 :(得分:0)

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