selector标签,这个标签是必要的标签,而且应当作为XML文件的根节点,在selector可以有一或多个item子标签在selector标签中,我们可以配置以下几种属性:
xmlns:android="http://schemas.android.com/apk/res/android" 这个是android的命名空间,默认这么写就可以
android:constantSize 这个是布尔型,false表示各个状态的大小(size)各自不同,true表中所有的状态大小相同(以最大的为 准)。默认为falseandroid:dither 布尔型。true表示,如果一个屏幕中位图有这不同的像素配置,启用位图的抖动。false表示不启用位图的抖动。默认 为true。据度娘:dither,抖动,是一种故意造成的噪音用以随机化量化误差,阻止大幅度拉升图像时导致的像 banding(色带)这样的问题。
android:variablePadding 布尔型。选择true时,drawable的内边距会根据状态的变化而变化,设置为true时,你必须为不同的状态 配置layout,但是通常不建议这么做。选择false时,内边距保持一致,所有状态中最大的内边距。默认为 false
接下来是Item标签item标签,通过一些属性的配置,定义drawable的特定状态。该标签必须作为selector的子标签。在item标签中,我们可以配置一下几种属性
android:drawable
这个属性是必须的,为当前控件指定资源。
android:state_pressed
布尔值。true指当用户点击或者触摸该控件的状态。默认为false
android:state_focused
布尔值。ture指当前控件获得焦点时的状态。默认为false
android:state_hovered
布尔值。true表示光标移动到当前控件上的状态。默认为false
android:state_selected
布尔值。true表示被选择的状态,例如在一个下拉列表中用方向键下选择其中一个选项。
这个和focus的区别,selected是focus不充分的情况。比如一个listview获得焦点(focus),而用方向键选择了其中的一个item(selected)
android:state_checkable
布尔值。ture表示可以被勾选的状态。这个仅在当控件具有被勾选和不被勾选的状态间转换时才起作用。
android:state_checked
布尔值。true表示当前控件处于被勾选(check的状态)
android:state_enabled
布尔值。true表示当前控件出于可用的状态。比如可以被点击
android:state_activated
布尔值。true表示当前控件被激活的状态。
android:state_window_focused
布尔值。true表示当前控件出于最前端时,应用窗口获得焦点的状态。