创建:在res/drawable文件夹下创建:batch_sel_btn.xml
使用:在XML中
android:background="@drawable/batch_sel_btn"
android:drawableLeft="@drawable/batch_sel_btn"
android:textColor="@drawable/batch_sel_btn"
selector可根据view的不同状态改变其形状,背景,图片,文字颜色等。
selector包括有selector和item两种属性,其中selector为一级属性,其余为item子属性,子属性可以选择定义。基本结构如下:
<selector xmlns:android="http://schemas.android.com/apk/res/android"
>
<item />
</selector>
1.selector包含的属性:
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:dither="true"
android:visible="false"
android:enterFadeDuration="1000"
android:exitFadeDuration="1000"
android:variablePadding="true"
android:autoMirrored="true"
android:constantSize="false">
Dither:值为“true”时,将在位图的像素配置与屏幕不同时(例如:ARGB 8888 位图和 RGB 565 屏幕)启用位图的抖动;值为“false”时则停用抖动。默认值为 true。
Visible:设置初始的可见性状态,默认为false。
ExitFadeDuration:状态改变时,旧状态消失时的淡出时间,单位毫秒。
EnterFadeDuration:状态改变时,新状态展示时的淡入时间,单位毫秒。
VariablePadding:如果可绘制对象的内边距,应根据选择的当前状态而变化,则值为“true”;如果内边距应保持不变(基于所有状态的最大内边距),则值为“false”。启用此功能要求您在状态变更时处理执行布局,这通常不受支持。默认值为 false。
AautoMirrored:设置图片是否需要镜像反转,当布局方向是RTL,即从右到左布局时才有用。
ConstantSize:可绘制对象报告的内部大小,在状态变更时保持不变,则值为“true”(大小是所有状态的最大值);如果大小根据当前状态而变化,则值为“false”。默认值为 false。
2.selector的常用状态:
android:state_enabled: 设置触摸或点击事件是否可用状态,一般只在false时设置该属性,表示不可用状态
android:state_pressed: 设置是否按压状态,一般在true时设置该属性,表示已按压状态,默认为false
android:state_selected: 设置是否选中状态,true表示已选中,false表示未选中
android:state_checked: 设置是否勾选状态,主要用于CheckBox和RadioButton,true表示已被勾选,false表示未被勾选
android:state_checkable: 设置勾选是否可用状态,类似state_enabled,只是state_enabled会影响触摸或点击事件,而state_checkable影响勾选事件
android:state_focused: 设置是否获得焦点状态,true表示获得焦点,默认为false,表示未获得焦点
android:state_window_focused: 设置当前窗口是否获得焦点状态,true表示获得焦点,false表示未获得焦点,例如拉下通知栏或弹出对话框时,当前界面就会失去焦点;
android:state_activated: 设置是否被激活状态,true表示被激活,false表示未激活,可通过代码调用控件的setActivated(boolean)方法设置是否激活该控件
android:state_hovered: 设置是否鼠标在上面滑动的状态,true表示鼠标在上面滑动,默认为false
selector可作为drawable和color资源使用,可以添加多个item标签
1.作为drawable资源使用时,item必须指定android:drawable属性。drawable=可以是shape也可以是图片,例如
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/shape1" android:state_activated="false" />
<item android:drawable="@drawable/shape2" android:state_activated="true" />
</selector>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@mipmap/picture1" android:state_activated="false" />
<item android:drawable="@mipmap/picture2" android:state_activated="true" />
</selector>
2.作为color资源使用时,item必须指定android:color属性。
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/color1" android:state_activated="false" />
<item android:color="@color/color2" android:state_activated="true" />
</selector>