之前觉得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" />

android 动态改变button样式,Android 修改button颜色相关推荐

  1. android 动态改变进度条,Android条纹进度条的实现(调整view宽度仿进度条)

    Android条纹进度条的实现(调整view宽度仿进度条) 发布时间:2020-10-03 16:14:24 来源:脚本之家 阅读:89 作者:RustFisher 前言 本文主要给大家介绍了关于An ...

  2. Android 动态改变SeekBar进度条颜色与滑块颜色

    Android 动态改变SeekBar进度条颜色与滑块颜色 遇到个动态改变SeekBar进度条颜色与滑块颜色的需求,如图: 有的是根据不同进度改变成不同颜色. 对于这个怎么做呢?大家都知道设置下pro ...

  3. Android动态改变TextView字体颜色

    Android动态改变TextView字体颜色 分类: Android 2012-06-04 21:56 141人阅读 评论(0) 收藏 举报 androidcolorslayout 必须在在res/ ...

  4. 如何通过js改变css样式,如何通过JS 动态改变CSS样式

    如何通过JS 动态改变CSS样式0 豆豆dou...2013.09.15浏览640次分享举报 .TLIWREGION3CSS { position:absolute; left:32px; top:4 ...

  5. EasyUI/TopJUI之如何动态改变下拉列表框ComboBox输入框的背景颜色

    简单记录一下 前段时间接到客户需求:动态改变下拉列表框ComboBox输入框的背景颜色. 刚开始想的很简单在用户选择列表项的时候,判断一下列表框的value值添加相应的背景颜色就OK了,然而在实际操作 ...

  6. android自定义漂亮按钮样式,Android开发之漂亮Button样式

    开发中各种样式的Button,其实这些样式所有的View都可以共用的,可能对于你改变的只有颜色 所有的都是用代码实现 150CC48D90067F05BFAC966F4EE3E21D.jpg 边框样式 ...

  7. Android 动态改变桌面图标

    其实很简单,利用 AndroidManifest.xml 文件中的 <activity-alias> 标签即可实现. <activity-alias> 介绍 大家知道,对于 A ...

  8. android 动态改变语言,android动态设置app当前运行语言的方法

    android开发中有时候碰到切换语言的需求,这时候需要通过代码动态改变当前运行语言. package com.example.androidtest; import java.util.Locale ...

  9. android 动态改变listview的内容

    本文模拟:点击一个按钮,为已有的listview添加一行数据 <?xml version="1.0" encoding="utf-8"?> < ...

最新文章

  1. apache ant 安装_SAP Hybris使用recipe进行安装时,是如何执行ant命令的?
  2. 【转】mssql中大小写的区分
  3. html div p 区别,html中div br p三者有什么区别?
  4. IBM Watson物联网平台的两个MQTT工具
  5. oracle虚拟机字符集,更改虚拟机上的oracle字符集
  6. 打docker镜像_从安全到镜像流水线,Docker 最佳实践与反模式一览
  7. P5 周志华:“数据、算法、算力”,人工智能三要素在未来还要加上“知识”
  8. python编程入门指南-编程入门指南
  9. python如何删除对象_Python-从列表中删除对象
  10. Java小白学习指南【day43】---Linux
  11. 数据结构——顺序表的C语言代码实现
  12. 2.aop原理:@EnableAspectJAutoProxy
  13. Android正确使用Scheme协议打开App,兼容浏览器scheme的二次跳转
  14. 论文写作笔记1:医学跨计算机期刊介绍
  15. 协众信息技术平面海报设计,你知道多少
  16. echo命令详细解析(linux中超级详细,图文展示)
  17. 相机误删照片恢复的步骤是什么?仅需3步,圆满解决
  18. 若依微服务版登录流程源码分析1
  19. word段落间距调整:格式刷/取消对齐网格/分节符/擦除格式都无效的应对方法
  20. Linux网络服务-----测试网络命令与DHCP服务

热门文章

  1. 在ensp安装过程中遇到的错误(40 41错误,usg6000v导入时配置文件格式错误)
  2. 中国计算机发展史 博客,“博客”(Blog)在中国的发展历程
  3. 独立显卡怎么安装-安装独立显卡简易视频安装教程
  4. Hikaril过一段时间就出错,Possibly consider using a shorter maxLifetime value问题
  5. IT嘚吧嘚 盘点2015企业与互联网+的私语
  6. windows7经典开机音乐_Windows 7正式退休,微软出手,网友含泪告别情怀:感谢11年陪伴...
  7. docker-compose 部署 php + nginx + mysql + redis
  8. 人工智能技术与自动驾驶,自动驾驶与人工智能
  9. post请求改成body_Post 方法参数写在body中和写在url中有什么区别?
  10. 解决idea打不开的两种可能性