全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android  selector的实例详解

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

语法:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
  android:constantSize=["true" | "false"]
  android:dither=["true" | "false"]
  android:variablePadding=["true" | "false"] >
  <item
    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"] />
</selector>

更多详细说明,请查阅xsoftlab

实际使用

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

XML文件

selector_ts.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:drawable="@color/pink" android:state_pressed="true" />
  <item android:drawable="@color/yellow" android:state_selected="true" />
  <item android:drawable="@drawable/shaperect" android:state_enabled="false" />
  <item android:drawable="@color/stone" android:state_enabled="true" />
</selector>

主布局文件(activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  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">

  <Button
    android:id="@+id/bt_content"
    android:layout_width="match_parent"
    android:layout_height="300dp"
    android:background="@drawable/selector_ts" />

  <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="50dp"
    android:orientation="horizontal">


    <Button
      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" />

    <Button
      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" />

    <Button
      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" />
  </LinearLayout>
</LinearLayout>

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

实际效果

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


# Android  # selector  # selector的使用方法  # Android selector背景选择器的使用详解  # Android Selector和Shape的使用方法  # Android使用selector修改TextView中字体颜色和背景色的方法  # 基于android背景选择器selector的用法汇总  # Android中Listview点击item不变颜色及设置listselector 无效的解决方案  # Android中的Shape和Selector的结合使用实例  # Android编程之selector下设置背景属性值的方法  # 第一个  # 都是  # 几个  # 是一种  # 你可以  # 你就  # 将会  # 就不  # 如有  # 遍历  # 一遍  # 希望能  # 有几个  # 做一个  # 欢迎大家  # 可以实现  # 谢谢大家  # 来实现  # 还有很多  # 相匹配 


相关文章: 南京网站制作费用,南京远驱官方网站?  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  韩国服务器如何优化跨境访问实现高效连接?  成都网站制作公司哪家好,四川省职工服务网是做什么用?  教学论文网站制作软件有哪些,写论文用什么软件 ?  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  广州顶尖建站服务:企业官网建设与SEO优化一体化方案  如何使用Golang安装API文档生成工具_快速生成接口文档  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?  宝塔面板创建网站无法访问?如何快速排查修复?  ,怎么用自己头像做动态表情包?  小程序网站制作需要准备什么资料,如何制作小程序?  如何零基础在云服务器搭建WordPress站点?  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  沈阳制作网站公司排名,沈阳装饰协会官方网站?  建站之星如何通过成品分离优化网站效率?  深圳网站制作的公司有哪些,dido官方网站?  C#如何使用XPathNavigator高效查询XML  IOS倒计时设置UIButton标题title的抖动问题  Android使用GridView实现日历的简单功能  建站OpenVZ教程与优化策略:配置指南与性能提升  巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成  建站主机系统SEO优化与智能配置核心关键词操作指南  高防服务器租用如何选择配置与防御等级?  制作网站公司那家好,网络公司是做什么的?  如何在阿里云服务器自主搭建网站?  *服务器网站为何频现安全漏洞?  制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?  潍坊网站制作公司有哪些,潍坊哪家招聘网站好?  如何选择适合PHP云建站的开源框架?  建站之星云端配置指南:模板选择与SEO优化一键生成  武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?  如何快速搭建高效香港服务器网站?  如何在西部数码注册域名并快速搭建网站?  实例解析angularjs的filter过滤器  如何通过wdcp面板快速创建网站?  早安海报制作网站推荐大全,企业早安海报怎么每天更换?  Python多线程使用规范_线程安全解析【教程】  建站VPS推荐:2025年高性能服务器配置指南  智能起名网站制作软件有哪些,制作logo的软件?  建站之星后台密码遗忘?如何快速找回?  广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?  如何高效配置香港服务器实现快速建站?  linux top下的 minerd 木马清除方法  如何在IIS中配置站点IP、端口及主机头?  英语简历制作免费网站推荐,如何将简历翻译成英文?  建站之星如何防范黑客攻击与数据泄露?  如何在IIS中新建站点并配置端口与IP地址?  C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。