安卓开发中我们会经常使用到Button,checkBox等控件,但是原生的控件非常丑一般情况下我们会给它加入一些点击或者选择样式,这时候就会使用到状态选择器。
Button加入Selector
下面我们以一个Button的点击样式为例介绍一个Button控件在正常情况和点击之后的样式。
先来看下我们要实现的效果图
未点击的Button效果:
点击状态下的Button效果:
下面一步一步实现(大致为4步):
1.在res下新建drawable文件夹
2.在drawable下创建一个选择器selector名字随你取,我这里叫button_selector
shape和item混合使用:
1.shape是用来绘制Button背景形状和颜色的(可以是方形、圆形、圆角)
其中rectagle矩形,oval椭圆,line水平直线,ring环形
2.item用来区分当前控件状态(选中、点击、获得焦点或者是否响应事件)
item中也可以指定drawable图片
例如:<item android:state_selected="true" android:drawable="@drawable/pic4" />这样就可以不使用shape属性了
item属性介绍:
android:state_selected选中
android:state_focused获得焦点
android:state_pressed点击
android:state_enabled设置是否响应事件,指所有事件
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<!-- 没有点击状态 -->
<item android:state_pressed="true">
<!-- 其中rectagle矩形,oval椭圆,line水平直线,ring环形 -->
<shape android:shape="rectangle">
<!-- 实心 -->
<solid android:color="#FF602C" /> <!-- #FF602C橘红色 -->
<!-- 描边 -->
<stroke android:width="1dp" android:color="#FF602C" />
<!-- 圆角 四角弯度-->
<corners android:radius="8dp" />
</shape>
</item>
<!-- 点击状态 -->
<item android:state_pressed="false">
<shape android:shape="rectangle">
<!-- 实心 -->
<solid android:color="#ffffff" />
<!-- 描边 -->
<stroke android:width="1dp" android:color="#FF602C" />
<!-- 圆角 -->
<corners android:radius="8dp" />
</shape>
</item>
</selector>
3.在drawable下创建一个文字颜色选择器selector名字随你取,我这里叫text_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="@color/white"></item>
<item android:state_pressed="false" android:color="@color/red_orange"></item>
</selector>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:background="@drawable/button_selector"
android:textColor="@drawable/text_color_select"
android:text="测试按钮" />