按钮选中高亮常规代码如下:
<?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)来实现按钮按下后处于选中/非选中的状态。
按钮选中高亮通常使用state_selected、state_pressed等状态。state_pressed在触摸时显示高亮,离开时恢复。若设置state_selected并通过setSelected()控制,可实现按钮的选中/非选中状态切换,常用于ListView等控件的高亮效果。
1051

被折叠的 条评论
为什么被折叠?



