博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android:自定义控件样式(Selector)
阅读量:6259 次
发布时间:2019-06-22

本文共 2169 字,大约阅读时间需要 7 分钟。

前言

  在开发一个应用程序过程中不可避免的要去修改组件的样式,比如按钮、输入框等。现在就看下如何通过Seletor实现样式的自定义。先看下简单的效果对比

概要实现

  首先写这个Selector XML文件,叫做button_selector,放到了drawable文件夹下,大概内容如下所示

  

1 
2
3 4
5
6
7
8
9
10
11
12 13
14
15
16
17
18
19
20
21
22
23 24

  然后为该按钮设置background属性:@drawable/button_selector,如下所示

  

  这样自定义样式就成功的应用到了这个按钮上了。

Selector

  先来看下官方描述:

  You can describe the state list in an XML file. Each graphic is represented by an <item> element inside a single <selector> element. Each <item> uses various attributes to describe the state in which it should be used as the graphic for the drawable.

  意思是说:你可以用一个XML文件来描述状态列表。在唯一的selector节点下,用item来描述每一种状态。每一个item通过不同的属性来标识用于哪种属性。

  下面就看下item的具体属性

  android:drawable:引用一个drawable资源

  android:state_pressed:Boolean值,如果设置为true则代表用于对象在被按下的时候

  android:state_focused:Boolean值,如果设置为true则代表用于对象在获得焦点的时候

  android:state_hovered:Boolean值,如果设置为true则代表用于对象在hover状态的时候

  android:state_selected:Boolean值,如果设置为true则代表用于对象在选中的时候

  android:state_checkable:Boolean值,如果设置为true则代表用于对象允许选中的时候

  android:state_checked:Boolean值,如果设置为true则代表用于对象被选中的时候

  android:state_enabled:Boolean值,如果设置为true则代表用于对象可用的时候(响应触摸或点击事件)

  android:state_activated:Boolean值,如果设置为true则代表用于对象被激活的时候

  android:state_window_focused:Boolean值,如果设置为true则代表用于窗体获得焦点的时候

  通过以上属性,就可以灵活的定制出期望的结果了,这次例子只是展示了android:state_pressed这一种状态的效果。Selector代码为上文提到的button_selector。效果如下所示

  

简单分析

  再来看下press的那个item内容。

  

  上图所示的按下效果是通过shape标签来完成的。这个标签用来指定背景的样式,由于这次重点介绍Selector的用法,Shape的用法就不过多解释了,只是把代码中出现的标签做下简单说明。

  stroke:用来设定背景边框的样式,可以去定义它的宽度(width),颜色(color),是否为虚线展示等等

  solid:用来设定背景颜色

 

后记

  这篇文字只是简单的介绍了下Selector的大体用法,具体的灵活使用可以构造出很强大的显示效果。

  原文地址:

  完整Demo:

solid

转载于:https://www.cnblogs.com/luoaz/p/3764784.html

你可能感兴趣的文章
BeautifulSoup学习心得(一)
查看>>
20159208《网络攻防实践》第三周学习总结
查看>>
统计信号处理-简单看看克拉美罗界
查看>>
201621123048《java程序设计》第一周学习总结
查看>>
(转)C#中 特性(attribute)的用法
查看>>
IEnumerable.GetEnumerator Method
查看>>
android上的.9.png图片文件
查看>>
最大连续子序列和的问题
查看>>
【转】程序员中"5%神话";刘未鹏:为什么你应该写博客
查看>>
Ubuntu新装系统要装软件
查看>>
解决pathForResource返回nil, 无法读取plist文件问题
查看>>
Http Servlet详解及学习地址
查看>>
ORACLE数据库学习之备份与恢复
查看>>
秋季学期学习总结
查看>>
Linux含交互的自动登录脚本
查看>>
Java使用内存映射实现大文件的上传
查看>>
【转】《Unity Shader入门精要》冯乐乐著 书中彩图
查看>>
React学习,搭建项目,入门
查看>>
Spring Tool Suite 使用自带maven速度慢---修改settings.xml更新mirror方法
查看>>
图片转成base64, base64转成图片
查看>>