Android状态选择器用法总结
原创文章,转载请注明出处http://www.cnblogs.com/baipengzhan/p/6284682.html
本文首先列出常见状态选择器的创建,然后按照常用控件来分别列出状态选择器的具体用法。
颜色状态选择器颜色状态选择器创建在res/color目录下,color目录一般不存在,我们自己创建即可。
颜色状态选择器只能用作改变颜色的地方,例如改变文字颜色等场合,不能作为背景,
当做背景时会出错,这点千万要注意。
以下为一个颜色状态选择器,今后可以参考这个创建其它的:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="#f00" android:state_checked="true"/>
<item android:color="#f00" android:state_pressed="true"/>
<item android:color="#f00" android:state_selected="true"/> <!--没被选中时的颜色-->
<item android:color="#000"/> </selector>
这里的颜色值为硬编码,不推荐,只为说明。
这个颜色状态选择器对应着四种状态,前三种对应着同一种颜色,最后一种为另一种颜色。
四种状态分别为:选中(checked),按下(pressed),选中(selected)和默认状态。
我们通过一个小例子看以下它的使用:
<RadioButton
android:id="@+id/button_4"
android:text="button_4"
android:button="@null"
android:textColor="@color/radiobutton_color_selector"
android:background="@drawable/radiobutton_bg_selector"
android:gravity="center"
android:layout_weight="1"
android:drawableTop="@drawable/radiobutton_pic_selector"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
这里是在一个RadioButton中改变文字颜色时使用的:
android:textColor="@color/radiobutton_color_selector"
一般状态选择器
这种最常用的状态选择器创建在res/drawable目录下,该目录是存在的不需要创建。
这种状态选择器用途就比上一种颜色状态选择器用途广泛多了,比如改变背景图片,
改变背景颜色,改变背景形状等等。
下面我们创建一个改变背景颜色的状态选择器
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:drawable="@color/radiobutton_bg_selected"/>
<item android:state_checked="true" android:drawable="@color/radiobutton_bg_selected"/>
<item android:state_pressed="true" android:drawable="@color/radiobutton_bg_selected"/> <!--未被选中-->
<item android:drawable="@color/radiobutton_bg_normal"/> </selector>
创建的时候要注意,这里是通过drawable属性改变颜色的,而不是color属性,不同于颜色状态选择器。
drawable属性值不能直接设置颜色值,如#f00等,而要将颜色值封装在values目录下,colors.xml文件中。
该选择器的使用也很简单,作为背景即可,见颜色状态选择器中的例子,设置背景:
android:background="@drawable/radiobutton_bg_selector"
下面我们创建一个改变背景图片的状态选择器
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:drawable="@mipmap/ic_selected"/>
<item android:state_checked="true" android:drawable="@mipmap/ic_selected"/>
<item android:state_pressed="true" android:drawable="@mipmap/ic_selected"/> <!--未被选中-->
<item android:drawable="@mipmap/ic_launcher"/> </selector>
注意,本状态选择器同样适用android:drawable属性,通过设置图片来让其被使用时出现图片而不是颜色。
但在输入android:drawable属性值时,系统可能出现不提醒(输入不完整信息,提醒完整信息)情况,这个时候我们要手动输入。
这个状态选择器的使用同样用上面RadioButton的例子,在文字上面的图片设置时使用:
android:drawableTop="@drawable/radiobutton_pic_selector"
下面我们创建一个改变背景形状的状态选择器
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/textview_pressed_shape"/>
<item android:state_selected="true" android:drawable="@drawable/textview_pressed_shape"/>
<item android:state_checked="true" android:drawable="@drawable/textview_pressed_shape"/> <!--未被选中时-->
<item android:drawable="@drawable/textview_normal_shape"/> </selector>
选中和未选中时背景形状改变,形状资源使用的是自己创建的shape文件,见下面代码:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
> <!--矩形的四个角都设置为圆角,半径为5dp-->
<corners android:radius="5dp"/>
<!--设置形状的颜色-->
<solid android:color="#f00"/>
<!--设置形状的大小-->
<size android:width="80dp" android:height="20dp"/> </shape>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval"
> <!--设置形状的颜色-->
<solid android:color="#0f0"/>
<!--设置形状的大小-->
<size android:width="40dp" android:height="20dp"/> </shape>
shape文件同样创建在res/drawable目录下,本文不做详细介绍。
注意,shape中设置的长宽没有起作用,目前没有查到原因,留待今后解决。
下面我们创建一个改变背景渐变色的状态选择器
这里状态选择器和上一种的区别是shape文件中的设置发生了变化,其余都一样,请看下面的代码:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
> <!--矩形的四个角都设置为圆角,半径为5dp-->
<corners android:radius="5dp"/>
<!--设置渐变色-->
<gradient android:startColor="#00f" android:centerColor="#0f0" android:endColor="#f00"/> </shape>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
> <!--矩形的四个角都设置为圆角,半径为5dp-->
<corners android:radius="5dp"/>
<!--设置渐变色-->
<gradient android:startColor="#f00" android:centerColor="#0f0" android:endColor="#00f"/> </shape>
好啦,我们就先总结到这里,最后啰嗦一句,颜色状态选择器放在res/color目录下,这个目录要手动创建,使用的时候只能当做颜色使用,不能当做背景使用;
一般状态选择器放在res/drawable目录下,此目录已经存在,无需我们创建,使用的时候要当做背景,可以改变背景颜色,形状,图片等。
Android状态选择器用法总结的更多相关文章
- Android初级教程:如何自定义一个状态选择器
有这样一种场景:点击一下某个按钮或者图片(view),改变了样式(一般改变背景颜色).这个时候一种解决方案,可能就是状态选择器.接下来就介绍如何实现状态选择器: 步骤: 一.新建这样的文件夹:res/ ...
- Android webservice的用法详细讲解
Android webservice的用法详细讲解 看到有很多朋友对WebService还不是很了解,在此就详细的讲讲WebService,争取说得明白吧.此文章采用的项目是我毕业设计的webserv ...
- listview条目用状态选择器没反应
button和imagebutton天生具有“可点击(click)”.“可按下(press)”的特性,radiobutton具有“可勾选(check)”的特性,但是listview的条目只有“可按下( ...
- xamarin android viewpager的用法
1.什么是ViewPager 通过手势滑动可以完成view的切换,一般是用来app的引导页或则实现图片轮播,类似网页上的banner轮播. Adnroid 3.0后引入的一个UI控件,在xamarin ...
- selector状态选择器
Selector selector就是状态选择器(StateList),它分为两种,一种Color-Selector 和Drawable-Selector. Color-Selector color- ...
- 深入学习jQuery选择器系列第六篇——过滤选择器之状态选择器
× 目录 [1]焦点状态 [2]哈希状态 [3]动画状态[4]显隐状态 前面的话 过滤选择器的内容非常多,本文介绍过滤选择器的最后一部分——状态选择器 焦点状态 :focus :focus选择器选择当 ...
- 【Android学习】android:layout_weight的用法实例
对于android:layout_weight的用法,用下面的例子来说明: <LinearLayout xmlns:android="http://schemas.android.co ...
- Android之Adapter用法总结-(转)
Android之Adapter用法总结 1.概念 Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带.在常见的View(List View,Grid Vie ...
- Android之Adapter用法总结(转)
Android之Adapter用法总结 1.概念 Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带.在常见的View(List View,Grid Vie ...
随机推荐
- jmeter里json path postprocessor的用法
后置处理器添加 json path postprocessor. 用处: 当前接口响应返回的json中提取内容,作为变量可以在不同的请求中传递. 如下,从登陆接口返回的json中提取user id,变 ...
- js 仿 asp中的 asc 和 chr 函数的代码
<script type="text/javascript">var str;var asc; str = "A";document.write(s ...
- drupal中使用jquery&ajax
不说了,直接上代码,看注释吧: <!--drupal中使用jquery的方法,有三个不同之处 --> <script> (function($){//1.$符号不放在最外边了 ...
- js检测文章敏感词
在一些博客或者论坛中,文章中的敏感词需要显示出来和高亮显示起到提示用户的作用.这个功能实现的方法有很多,下面是js的实现方式. //将文章中匹配到的敏感词罗列出来 <span style=&qu ...
- nodejs在cmd提示不是内部或外部命令解决方法
今天用cmd安装个库,结果发现node不是内部命令,于是搜索了下解决方法,发现原来我上次重装nodejs换了个安装位置,path环境变量忘改了. 找到变量值中node的安装地址,比如C:develop ...
- 编写第一个ROS(创建工作空间workspace和功能包package)
刚接触ROS,学着写了第一个程序,怕以后忘记,就将其步骤记录下来.. 首先你必须保证你电脑已安装配置好ROS. 1.创建工作空间(workspace) 我们所创建功能包package,应该全部放到一个 ...
- PostgreSQL 类型转换 -除法
PostgreSQL 类型转换 类似Oracle ,PostgreSQL也有强大的类型转换函数, 下面仅举两个类型转换例子. --1 例子 postgres=# select 1/4; ?colum ...
- 【转】HTML-based script和URL-based script两种脚本录制方式
在Web(HTTP/HTML)录制中,有2种重要的录制模式.用户该选择那种录制模式呢?HTML-mode录制是缺省也是推荐的录制模式.它录制当前网页中的HTML动作.在录制会话过程中不会录制所有的资源 ...
- SublimeLinter 3中使用jshint
这货得知已久,在sublime2时期对着教程按部就班的凑合用着...不明所以. 今天无意发现SublimeLinter终于出3了,果断装之,鼓捣1个多小时,磕磕绊绊终于成功工作了.期间看了无数英文文档 ...
- 草料生成app自动下载的二维码
草料官网http://cli.im/app 填写iOS和安卓的appid就好了