android selector文件,Android selector的实例详解_Android_脚本之家

Android  selector的详解

前言:

StateListDrawable 是一种通过XML文件来定义的drawable,使用几个不同的图片来呈现同一个图形,通过object的状态来实现切换。例如,一个Button有几个不同的状态(按压,获取焦点等等),这种情况下,通过使用 state list drawable,你就可以实现在不同的状态下使用不同的背景图片。

你可以在一个XML文件中描述state list。通过在根节点selector下定义一个item元素来添加每个图形。每一各item中使用不同的状态属性来定义不用的drawable。

当每一次状态改变的时候,state list都会从上到下被遍历一遍,第一个与当前state相匹配的item将会被使用—- 这个选择并不是作出“最匹配”结果,而是简单的找到第一个匹配的状态。

selector一般都是用来作为有状态改变的View的背景,以此来达到当用户对View进行操作,导致View状态改变时,作出改变,让用户感知View的状态变化。

官方说明

文件位置:res/drawable/filename.xml

编译资源类型:StateListDrawable

资源引用:

In Java: R.drawable.filename

In XML: @[package:]drawable/filename

语法:

android:constantSize=["true" | "false"]

android:dither=["true" | "false"]

android:variablePadding=["true" | "false"] >

android:drawable="@[package:]drawable/drawable_resource"

android:state_pressed=["true" | "false"]

android:state_focused=["true" | "false"]

android:state_hovered=["true" | "false"]

android:state_selected=["true" | "false"]

android:state_checkable=["true" | "false"]

android:state_checked=["true" | "false"]

android:state_enabled=["true" | "false"]

android:state_activated=["true" | "false"]

android:state_window_focused=["true" | "false"] />

更多详细说明,请查阅xsoftlab

实际使用

下面做一个简单的实例,对Button的背景根据状态做一下处理

XML文件

selector_ts.xml

主布局文件(activity_main.xml)

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:focusable="true"

android:focusableInTouchMode="true"

android:orientation="vertical"

android:padding="10dp"

tools:context="mraz.com.tabdemo.MainActivity">

android:id="@+id/bt_content"

android:layout_width="match_parent"

android:layout_height="300dp"

android:background="@drawable/selector_ts" />

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_marginTop="50dp"

android:orientation="horizontal">

android:id="@+id/bt_selected"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_weight="1"

android:text="Select"

android:textAllCaps="false" />

android:id="@+id/bt_disable"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_weight="1"

android:text="Disable"

android:textAllCaps="false" />

android:id="@+id/bt_pressed"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_weight="1"

android:text="Press"

android:textAllCaps="false" />

代码部分 比较简单,这里就不占用过多的篇幅了,看下简单的效果,大家应该就知道如何编写小小的Activity了。

实际效果

84a479899f33d72d834181ace065a945.gif

如有疑问请留言或者到本站社区交流讨论,本站关于Android 开发的文章还有很多,欢迎大家搜索查阅,谢谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值