Android XML——selector标签

本文介绍了Android XML中selector标签的使用,包括它如何根据View的状态改变形状、背景、图片和文字颜色。selector包含的属性如Dither、Visible等,并详细讲解了selector的常用状态,如state_enabled、state_pressed等,以及它们在不同场景下的应用。

创建:在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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值