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

来源:互联网 发布:matlab 网络协议仿真 编辑:程序博客网 时间:2024/05/16 15:54

按钮选中高亮常规代码如下:

<?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)来实现按钮按下后处于选中/非选中的状态。

0 0
原创粉丝点击