android 动态改变button样式,Android 修改button颜色

之前觉得button颜色修改,直接修改background就行了,但是会引发一系列的问题。比如原来的波纹效果没有了,button的状态改变的时候(例如,被禁用了),button的颜色没有任何变化。

这里针对这个问题做一个方法的小结

普通Button的解决方法

普通的Button,解决方法比较常见,直接使用Drawable,自己做一个selector,需要点击的波纹效果的话,加上,之后添加一个例子:

栗子

MaterialButton的解决方法

进入Material设计以后,MaterialButton使用起来和普通button有一些区别。

在将app的主题设置为Theme.MaterialComponents.Light.NoActionBar的时候。

我们的button颜色会默认变成colorAccent的颜色。

MaterialButton的background属性不起作用了,必须要设置

app:backgroundTint才有效果。

但是设置这个属性以后,我们的button在改变状态的时候,颜色就不会发生变化了(点击的波纹效果会变化)。

1、 如果希望状态改变,背景颜色也改变的条件下,修改button颜色

MaterialButton的颜色是根据主题的colorAccent来决定的,那么就单独给MaterialButton设置一个主题

注意,这里要使用android:theme="@style/ButtonStyle"来设置主题,不是使用style

并且在主题中,设置colorAccent为想要的颜色

@color/colorAccent

这样,就满足我们的需求了

2、引申一下,MaterialButton的在禁用状态下,button的颜色是固定的,全部都是灰色,如果希望修改这个颜色怎么办

如果我们的button普通情况下是红色,在禁用的情况下,让他遍成浅红色。

我这边找了很多方法,但是没有直接修改禁用状态button的颜色的

我这边提供了一个比较取巧的方法:

首先我们知道app:backgroundTint设置以后,禁用状态的下,button颜色不会改变,那么我们可以把手动用代码,在按钮禁用状态下,把button的alpha设置一下,让视觉效果看起来像是禁用状态的。

style="@style/ButtonStyle"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginStart="12dp"

android:layout_marginTop="12dp"

android:layout_marginEnd="12dp"

android:layout_marginBottom="12dp"

android:alpha="0.2"

android:enabled="false"

app:backgroundTint="#898989" />

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值