Android selector标签下的几种状态解读

来源:互联网 发布:php过滤相同的数据 编辑:程序博客网 时间:2024/05/20 03:44

selector标签,这个标签是必要的标签,而且应当作为XML文件的根节点,在selector可以有一或多个item子标签在selector标签中,我们可以配置以下几种属性:


xmlns:android="http://schemas.android.com/apk/res/android" 这个是android的命名空间,默认这么写就可以

android:constantSize 这个是布尔型,false表示各个状态的大小(size)各自不同,true表中所有的状态大小相同(以最大的为准)。默认为false
android: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表示当前控件出于最前端时,应用窗口获得焦点的状态。


注意:安卓程序在读取这个文件时,只会读取符合当前控件状态的第一个Item的内容。如果在selector下的第一个item中没有标注以上任何一个状态,那么它表示使用任何状态,将会在空间每次状态变化时只读取这个item的内容。所以,这样的默认的配置,一般都会置于最下面的item中。

0 0
原创粉丝点击