1.首先先定义我们的按钮
<Button
android:id="@+id/my_id"
style="@style/my_style"
android:minHeight="0dp"
android:drawableStart="@drawable/drawable_selector"
android:text="文字"/>
2.定义按钮用到的样式
<style name="my_style">
<item name="android:layout_width">110dp</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textAlignment">center</item>
<item name="android:background">@drawable/background_selector</item>
<item name="android:textSize">14sp</item>
<item name="android:textColor">@drawable/font_color_selector</item>
<item name="android:gravity">center</item>
<item name="android:paddingLeft">15dp</item>
<item name="android:paddingTop">8dp</item>
<item name="android:paddingBottom">8dp</item>
<item name="android:paddingRight">15dp</item>
</style>
3.定义我们在样式表中用到的背景selector
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/bg_normal" android:state_enabled="false" />
<item android:drawable="@drawable/bg_select" android:state_pressed="true" />
<item android:drawable="@drawable/bg_select" android:state_selected="true" />
<item android:drawable="@drawable/bg_normal" />
</selector>
可以看到我们在定义背景的selector的时候一共用到了4中状态来定义,其中包含了默认状态、按钮可用状态、按下状态以及选中状态,其实还有很多状态可以用,这里我们就定义这几种来说明,其他状态可以自己有兴趣去研究一下。
可以看到我们用背景图只使用了两个drawable,bg_normal和bg_select,这两个背景是我们用shape来定义出来的没有使用图片,如果使用图片就更方便了,直接把想要的图片设置到这里就可以了,我下边把两个shape定义的背景来贴出来。
bg_normal.xml定义如下
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="3.0dp" />
<stroke
android:width="0.5dp"
android:color="#BEBEBE" />
<solid android:color="#ffffff"/>
</shape>
bg_select.xml定义如下
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="3.0dp" />
<stroke
android:width="0.5dp"
android:color="#9fd6fc" />
<solid android:color="#e0f2ff"/>
</shape>
这样我们定义的背景selector就完成了。
4.定义按钮文字颜色的选择器font_color_selector
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="#2494ea"/>
<item android:state_focused="true" android:color="#2494ea"/>
<item android:state_selected="true" android:color="#2494ea"/>
<item android:color="#282828"/>
</selector
状态这里就不多做解释了,上边背景定义的时候提到了。
这个背景选择器是放到drawable下,这一点不用迷惑就这样用就行,我已经亲测。
5.最后定义图片按钮的selector
定义drawable_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/icon_pressed" android:state_pressed="true" />
<item android:drawable="@drawable/icon_select" android:state_selected="true"/>
<item android:drawable="@drawable/icon_normal" />
</selector>
最后这几个seletor的定义都说完了,其中图片资源我并没有提供,如果有需要可以用自己的图去实验。