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为想要的颜色

 

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

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

如果我们的button普通情况下是红色,在禁用的情况下,让他遍成浅红色。
我这边找了很多方法,但是没有直接修改禁用状态button的颜色的
我这边提供了一个比较取巧的方法:

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


你可能感兴趣的:(Android 修改button颜色)