selector的按钮选中处理问题

1、背景介绍

在做Android项目开发的时候,有时我们需要对按钮做一些特殊的处理,比如按钮点击的时候会有一个动画的效果,实际上就是几张图片在短时间的切换;再比如有时候我们需要对界面的选择的时候,需要表示该项目是选中状态还是不被选中状态,怎么办,同样使用两张图片,分别表示不同状态就行了。


2、代码示例

2.1 按钮的代码示例

<selector
  xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@drawable/menubar_home_pressed" />
    <item android:state_focused="true" android:state_enabled="true" android:drawable="@drawable/menubar_home_pressed" />
    <item android:state_enabled="true" android:drawable="@drawable/menubar_home_normal" />
    <item android:state_focused="true" android:drawable="@drawable/menubar_home_pressed" />
</selector>

上面的这段代码,表示的是一个按钮的动画效果

2.2 选中与失去焦点

</pre><pre name="code" class="html"><pre name="code" class="html"><selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/menubar_home_pressed" android:state_selected="true"/>
    <item android:drawable="@drawable/menubar_home_normal"/>     
</selector>
 

上面的代码中,item部分第一行表示选中状态,第二行表示认状态。


3、问题解析

在2.2中的代码,我们如果写成以下形式:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/menubar_home_normal"/>    
    <item android:drawable="@drawable/menubar_home_pressed" android:state_selected="true"/> 
</selector>

如果2.2中的item位置交换一下,第一行放在第二行的下面,那么我们可以在xml文件中看到一条黄色的波浪线。如下图所示:

我们可以看到,代码中有这样的提示

This item is unreachable because a prevIoUs item (item #1) is a more general match than this one
这句话就是说第二行item之前,不能有元素出现。如果这样放置,会出现按钮一直是认状态,而无法获得焦点的情况。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇