Android 系统Button 默认样式buttonStyle引发的一些问题以及思考
很多时候我们在自定义button的背景时会发现,无论如何button的大小总是那么什么…
首先selector:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!--点击背景-->
<item android:state_pressed="true">
<shape>
<!--色值-->
<solid android:color="@color/dark_green1" />
<!--圆角-->
<corners android:radius="5dp" />
</shape>
</item>
<item android:state_focused="true">
<shape>
<!--色值-->
<solid android:color="@color/dark_green1" />
<!--圆角-->
<corners android:radius="5dp" />
</shape>
</item>
<item android:state_enabled="false">
<shape>
<!--色值-->
<solid android:color="@color/LightGray" />
<!--圆角-->
<corners android:radius="5dp" />
</shape>
</item>
<!--默认背景-->
<item>
<shape>
<solid android:color="@color/dark_green" />
<corners android:radius="5dp" />
<padding android:bottom="8dp" android:left="22dp" android:right="22dp" android:top="8dp"/>
</shape>
</item>
</selector>
wrap_content的效果:
看起来还可以,但当你想要去调整button大小时你可能想到应该是padding的问题,你发现设置之后没有效果,但是又不能设置固定的值,怎么办呢?
两种办法:
1. 不用button,用textview即可
2. 继续使用button,但需要明确问题的所在
那么问题的所在无非就在系统默认的buttonStyle中了,那么如何查看系统默认的buttonStyle呢,步骤如下(api27):
打开任意布局文件,ctrl+左键打开button源码,即可看到默认的style名为buttonStyle
查看源码,打开D:\AndroidDev\sdk\platforms\android-27\data\res\values\attrs.xml 可看到
打开D:\AndroidDev\sdk\platforms\android-27\data\res\values\themes_material.xml 可看到引用的是@style/Widget.Material.Button
打开D:\AndroidDev\sdk\platforms\android-27\data\res\values\styles_material.xml 即可看到默认的样式
可以看到默认的Style设置了最小宽高了,如果你控件中没有设置这两个值,那么就会默认使用这两个值,所以当你使用wrap_content的时候,无论你怎么调,只要不大于这两个值,那么控件的大小都不会变。
上一篇: TreeSet类的常见误用
下一篇: TreeSet源码解析