您的位置:首页 > 其它

selector实现按钮选中高亮效果原理

2014-11-10 19:15 323 查看
按钮选中高亮常规代码如下:

<?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/background_pressed">
<item android:state_selected="true"
android:drawable="@drawable/background_pressed">
<item android:state_enabled="true"
android:drawable="@drawable/background_normal">
</selector>


通常情况下View可使用的包括state_enabled, state_selected, state_pressed, state_focused, state_hovered等等诸多状态,state_selected就是其中一个。

而对于一个按钮来说,正常情况下state_selected属性对它不起作用,state_selected一般用于ListView之类可以选中Item之类的控件。那么这里是如何利用state_selected属性来实现选中高亮效果的?

看到上面的代码,首先,state_pressed状态在手指触摸中它的属性值为true,自然显示的图片是@drawable/background_pressed,但当我们的手指离开屏幕或相应按钮区域时,state_pressed属性的值即变为false。故此时第一个Item不匹配,系统随即往下匹配其他的Item(匹配的顺利从上到下进行)。若没有第2个Item的话,将匹配到我们的第3个Item,即显示为正常的图片@drawable/background_normal,但我们这里第2个Item放了一个state_selected属性匹配的图片。因此,程序中我们可以通过调用setSelected(true)/setSelected(false)来实现按钮按下后处于选中/非选中的状态。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: