Android中Button的默认颜色为灰色,并且带有默认的点击效果,在5.0以上的系统还有涟漪的效果。通常在开发时我们都会修改Button的颜色,最常用的方式就是修改Button的背景颜色,即“android:background”;只是修改简单的修改背景颜色的话Button就没有点击效果,这时我们一般会使用selector来实现点击效果;这样处理不仅会增加工作量,也会丢失掉5.0以上系统的涟漪效果。
使用Style修改Button颜色并保持默认点击效果
Android中我们也可以通过Style来设置Button的样式
Style中Button样式的设置
首先我们需要查看默认的Button样式是如何设置的,在.../res/styles.xml
文件中我们可以看到应用默认的style
|
|
按住command键点击Theme.AppCompat.Light.DarkActionBar
,或者选中按“command+B”快捷键继续跟踪查看
|
|
继续跟踪查看Base.Theme.AppCompat.Light.DarkActionBar
|
|
继续跟踪查看Base.Theme.AppCompat.Light
时会提示有不同版本,通过一个个跟踪查看可以知道,最终继承的parent style都是Base.V7.Theme.AppCompat.Light
,在Base.V7.Theme.AppCompat.Light
中可以找到对Button样式的定义
|
|
其中有设置了buttonStyle,继续跟踪查看Widget.AppCompat.Button
有values.xml和values-v21.xml
values.xml
|
|
values-v21.xml
|
|
可以看到针对不同版本分别设置了Button的样式。
btttonStyle中颜色的设置
通过分析Style,可以知道通过buttonStyle来指定Button的样式
|
|
在V7支持包中,提供了5个预置的Button的Style,如下:
|
|
通过buttonStyle修改Button颜色
全局Button设置
直接在应用主题中设置buttonStyle,然后通过相应的属性修改Button的背景色或文字颜色,如下:
|
|
单个Button设置
在styles.xml文件中添加一个style,修改Button的背景色或文字颜色,然后在需要修改的layout的Button中添加android:theme="@style/RedButton"
属性即可,如下:
|
|
在layout中使用:
|
|
修改Button圆角大小
目前只找到了全局修改Button圆角大小的方法,
在dimes.xml
文件中复写abc_control_corner_material
的值,可以修改应用内所有Button的圆角大小
|
|