android selector作用,Android selector详解

背景:给控件不同状态设置背景色时,经常起不到效果,百思不得其解,后面才发现中的需要按一定顺序排列,下面对Selector的用法以及需要注意事项进行说明。

说明

selector集合定义在xml文件里面,View对象背景颜色的选择取决于自身当前的状态,总共有pressed、focused、selected、checkable、checked、enabled、window_focused和default八种状态,View对象的每一种状态可以设置不同的背景色。

匹配规则

我们知道可以给一个对象的多种状态设置不同的背景颜色,那么对象是如何根据状态来匹配颜色呢?规则是:根据当前对象状态,在selector集合中从上到下匹配,被匹配到的第一项作为对象的背景色。

注意点

1、因为匹配的第一项作为当前View对象的背景颜色,结束匹配。如果第一项每次都能被匹配到,就不会往下匹配,那么之后的状态也就失效了。然而每一个View对象都有默认状态,所以这也就是为什么默认状态不能放在开头,而要放到最后的原因。

2、不是所有的View子类都拥有八种状态,比如Button对象,拥有pressed、enabled、window_focused、default四种状态,如果设置selected是无效的,所以要根据组件的具体情况设置。

3、状态的顺序排放。

pressed->focused->selected->checkable->checked->enabled->window_focused->default

具体排放顺序还得根据当前View对象拥有的状态来排列。记住默认的权重是最大的,要放在最后面。

语法

939a6d5760d8

Alt text

有些同学可能会问这些状态是什么意思,什么时候被触发?

android:state_enabled

View对象没有被禁用时触发,即android:enabled="true",否则失效。

android:state_window_focused

当前Activity拥有用户输入焦点时被触发,即显示在最前端,如果有退出后台或者弹出Dialog会失效。

其他都好理解,这里就不做解释了。

应用

以一个Button按钮为例,点击按钮切换背景颜色。

在res/drawable目录下创建btn_touch_feedback.xml文件

2.在Button中应用

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:background="@drawable/btn_touch_feedback"

android:text="点击按钮"/>

来看我文章的同学们,如果觉得写的不错,给我点个赞吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值