如何实现具有涟漪效果的按钮的背景颜色

时间:2016-02-22 09:02:07

标签: android

我正在尝试在我的Android应用程序中实现涟漪效果,我在按钮上添加了涟漪效果,但我不知道在未聚焦/按下时我应该如何更改按钮颜色。

我的ripple.xml是这样的:

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:color="#f816a463"
    tools:targetApi="lollipop">
    <item android:id="@android:id/mask">
        <shape android:shape="rectangle">
            <solid android:color="#f816a463" />
        </shape>
    </item>
</ripple>

我的按钮是这样的:

<Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Login"
    android:id="@+id/login"
    android:layout_below="@+id/password"
    android:layout_centerHorizontal="true"
    android:layout_margin="20dp"
    android:textStyle="bold"
    android:background="@drawable/ripple"
    android:textColor="#FFFFFF"
    android:textSize="18dp"
    android:elevation="2dp" />

我尝试创建一个选择器并使用颜色设置按钮的正常状态,并将state_pressed state_focused设置为ripple.xml,但它不起作用。

实现此目的的另一个解决方案是将按钮包装到带有0边距的Layout并设置布局颜色,但我不喜欢这个解决方案。有没有更聪明的方法来实现这个目标?

1 个答案:

答案 0 :(得分:2)

android:id="@android:id/mask"中删除<item>,如下所示

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:color="#f816a463"
    tools:targetApi="lollipop">
    <item>
        <shape android:shape="rectangle">
            <solid android:color="#f816a463" />
        </shape>
    </item>
</ripple>