使用(Drawable)资源——StateListDrawable资源
2024-10-11 21:54:35
StateListDrawable用于组织多个Drawable对象。当使用StateListDrawable作为目标组件的背景、前景图片时,StateListDrawable对象所显示的Drawable对象会随目标组件状态的改变而自动切换。
定义StateListDrawable对象的XML文件的根元素为<selector.../>,该元素可以包含多个<item.../>元素,该元素可指定如下属性。
- android:color或android:drawable:指定颜色或Drawable对象。
- android:state_xxx:指定一个特定状态。
例如如下语法格式:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 指定特定状态下的颜色 -->
<item android:state_pressed=["true"|"false"] android:color="hex_color" ></item> </selector>
属性值 | 含义 |
android:state_active | 代表是否处于激活状态 |
android:state_checkable | 代表是否处于可勾选状态 |
android:state_checked | 代表是否处于可勾选状态 |
android:state_endabled | 代表是否处于可用状态 |
android:state_first | 代表是否处于开始状态 |
android:state_focused | 代表是否处于已得到焦点状态 |
android:state_last | 代表是否处于结束状态 |
android:state_middle | 代表是否处于中间状态 |
android:state_pressed | 代表是否处于已被按下状态 |
android:state_selected | 代表是否处于已被选中状态 |
android:state_window_focused | 代表是否窗口已得到焦点状态 |
实例:高亮显示正在输入的文本框
前面知道,使用EditText时可指定一个android:textColor属性,该属性用于指定文本框的文字颜色。前面介绍该属性时总是直接给它一个颜色值,因此该文本框的文字颜色总是固定的。借助于StateListDrawable对象,可以让文本框的文字颜色随文本框的状态动态改变。
为本系统提供如下Drawable资源文件。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 指定获取焦点时的颜色 -->
<item android:state_focused="true" android:color="#f44" ></item>
<!-- 指定失去焦点时的颜色 -->
<item android:state_focused="false" android:color="#000"></item>
</selector>
上面的资源文件中指定了目标组件得到焦点、失去焦点时使用不同的颜色,接下来可以在定义EditText时使用该资源。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<!-- 使用StateListDrawable资源 -->
<EditText android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@drawable/my_image"/>
<EditText android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@drawable/my_image"/>
</LinearLayout>
该应用的Java程序代码不需任何修改,只要显示该界面布局即可。运行该程序将看到如图6.3所示的界面。
通过使用StateListDrawable不仅可以让文本框文字的颜色随文本框状态的改变而切换,也可以让按钮的背景图片随按钮状态的改变而切换。实际上StateListDrawable的功能非常灵活,它可以让各种组件的背景、前景随状态的改变而切换。
最新文章
- HIVE教程
- STM32之PWM波形输出配置总结
- 同一内网不能网段ping 不通
- HDOJ 1690
- WCF分布式开发步步为赢(6):WCF服务契约继承与分解设计
- Visual Studio 2015 开发MVC4出现错误
- ps 网页配图设计
- 思考的工作方式——计划经济or市场经济
- android 有效载荷大图,避OOM
- CSS预处理器 Less Sass,Scss 编译 Sourcemap调试
- 照着例子学习protobuf-python
- 【转载】 Java:按值传递还是按引用传递详细解说
- 3D模型展示以及体积、表面积计算
- Django+xadmin打造在线教育平台(八)
- Linux Swap交换分区探讨
- Android测试(四)——内容供应器泄露
- 批量监测dns是否可用脚本,不可用时并切换
- CentOS 添加 Oracle YUM 源
- New Game! (最短路+建图)
- css边框内凹圆角,解决优惠券的边框问题