今天做的项目,发现通过键盘选中一个button以后,并没有出现button样式的变化,后来发现是selector里面缺少状态配置的原因。这里就顺便把用到的属性记录了下来,方便以后使用。当然它的属性很多,慢慢的累积吧
直接看代码
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 按下状态 --> <item android:drawable="@drawable/select_1" android:state_pressed="true"/> <!-- 获得焦点,比如物理按键选中 或者是代码中 requestFocus() --> <item android:drawable="@drawable/select_3" android:state_focused="true"/> <item android:drawable="@drawable/select_2"/> </selector>
注意selector 中,item的状态非常的多,它们中肯定有很多状态是有交集的,这时候item的顺序就决定了状态的选择。如果我们把上面的item 2 跟3 位置调换,你就会发现,focused 状态就不起作用了。因为代码认为,你只要不是pressed 状态,那么他就往下一个item判断,如果第二个可以,那么就不会在往下执行了。类似于代码中的switch
这个selector不仅仅可以作为一个按钮的点击状态,其实,凡是颜色的地方,它都是可以用的。例如,如果你想让一个textview的字体颜色随着textview的状态变化而发生相应的改变,你只需要把这个selector作为textColor的值就行了。这里需要主要的是
1.里面的android:drawable 变为android:color
2.如果引用的话,selector必须是一个@drawable引用,代码中也必须是R.drawable.