我正在尝试在我的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
并设置布局颜色,但我不喜欢这个解决方案。有没有更聪明的方法来实现这个目标?
答案 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>