一、常用修改Button颜色并设置点击效果方法
Android中Button的默认颜色为灰色,并且带有默认的点击效果,在5.0以上的系统还有涟漪的效果。通常在开发时我们都会修改Button的颜色,最常用的方式就是修改Button的背景颜色,即“android:background”;只是修改简单的修改背景颜色的话Button就没有点击效果,这时我们一般会使用selector来实现点击效果;这样处理不仅会增加工作量,也会丢失掉5.0以上系统的涟漪效果。
二、使用Style修改Button颜色并保持默认点击效果
AppCompact中提供的按钮有5种Style:
<style name="Widget.AppCompat.Button" parent="Base.Widget.AppCompat.Button"/>
默认的状态 背景颜色属性:colorButtonNormal 文字颜色属性:黑色
<style name="Widget.AppCompat.Button.Colored" parent="Base.Widget.AppCompat.Button.Colored"/>
背景颜色属性:colorAccent 文字颜色属性:白色
<style name="Widget.AppCompat.Button.Borderless" parent="Base.Widget.AppCompat.Button.Borderless"/>
背景颜色属性:透明 文字颜色属性:白色
<style name="Widget.AppCompat.Button.Borderless.Colored" parent="Base.Widget.AppCompat.Button.Borderless.Colored"/>
背景颜色属性:透明 文字颜色属性:colorAccent
<style name="Widget.AppCompat.Button.Small" parent="Base.Widget.AppCompat.Button.Small"/>
背景颜色属性:colorButtonNormal 文字颜色属性:黑色
如何修改背景颜色呢?
在styles.xml文件中新建Style,继承应用Style,在其中设置buttonStyle,并通过相应的属性修改Button的背景色或文字颜色然后在需要修改的Button中添加android:theme属性,引用新建的Style即可
<style name="AutoButton" parent="AppTheme">
<item name="buttonStyle">@style/Widget.AppCompat.Button</item>
<item name="colorButtonNormal">@color/colorRed</item>
</style>
在layout文件中使用:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
android:theme="@style/ AutoButton " />
除此之外在开发过程中还遇到了其他的一些需求。比如说修改所有Button的radius.
目前只找到了全局修改Button圆角大小的方法
在dimes.xml文件中复写abc_control_corner_material的值,可以修改应用内所有Button的圆角大小:
<dimen name="abc_control_corner_material" tools:override="true">8dp</dimen>