Android Button修改背景颜色及实现Button水波纹效果

文章介绍了如何在AndroidAPI33及以上版本,向下兼容到API24,修改Button的背景颜色并实现水波纹按压效果。关键步骤包括将Button类型改为android.widget.Button,以及创建ripple格式的XML文件来定义颜色和按压状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android Button修改背景颜色及实现Button水波纹效果,效果如下:

 

以下基于API33(Android13.0),向下兼容至API24(Android7.0)。

1.修改Button背景

我们可以发现在布局xml文件中直接修改background是没有作用的,会变成默认的主题色(themes.xml中的colorPrimary颜色,默认为紫色)

<Button
   android:id="@+id/dialog_button"
   android:layout_width="match_parent"
   android:layout_height="40dp"
   android:layout_centerHorizontal="true"
   android:layout_marginTop="105dp"
   android:background="@drawable/ripple_grey_e"
   android:text="确定"
   android:textColor="@color/grey_3"
   android:textSize="@dimen/main_text"
   tools:ignore="TouchTargetSizeCheck" />

这是由于在Android4.1之后的开发中创建的Button是Material类型的,默认使用主题色的,所以我们需要替换主题色或者使用非Material类型的Button,修改如下:

<android.widget.Button
   android:id="@+id/dialog_button"
   android:layout_width="match_parent"
   android:layout_height="40dp"
   android:layout_centerHorizontal="true"
   android:layout_marginTop="105dp"
   android:background="@drawable/ripple_grey_e"
   android:text="确定"
   android:textColor="@color/grey_3"
   android:textSize="@dimen/main_text"
   tools:ignore="TouchTargetSizeCheck" />

将Button修改为android.widget.Button标签即可。

2.实现按压水波纹效果

首先在drawable文件夹中创建ripple类型的xml文件,例如我创建的ripple_grey_e.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/grey_e">
    <item android:drawable="@color/selector_btn_transparent"/>
</ripple>

其中的@color/grey_e为colors.xml文件中定义的颜色(这个颜色就是水波纹的颜色,此处为浅灰色#eeeeee,示例动图中为使效果明显替换为了深灰色#333333),@color/selector_btn_transparent为color文件夹(推荐自建,也可以放在drawable文件夹中),selector_btn_transparent.xml内容如下:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!--按压下时-->
    <item android:state_pressed="true" android:color="@color/grey_f7" />
    <item android:color="@color/transparent"/>
</selector>

 grey_f7为浅灰色(#f7f7f7),transparent为透明色(#00ffffff)。

使用如下:

<android.widget.Button
   android:id="@+id/dialog_button"
   android:layout_width="match_parent"
   android:layout_height="40dp"
   android:layout_centerHorizontal="true"
   android:layout_marginTop="105dp"
   android:background="@drawable/ripple_grey_e"
   android:text="确定"
   android:textColor="@color/grey_3"
   android:textSize="@dimen/main_text"
   tools:ignore="TouchTargetSizeCheck" />

 本示例采用颜色较浅,如果想使效果更加明显,可以将颜色换为更加明显的颜色。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力敲代码呀~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值