selector (背景选择器)

Android中 selector 主要用于对控件(如对 button ,imagebutton,textview 等)的背景选择。

  • 属性介绍:

android:state_selected: 是否选中 true or false

android:state_focused: 是否获得焦点 true or false

android:state_pressed : 是否点击 true or false

android:state_enabled: 设置是否响应事件,指所有事件 true or false

android:state_checkable:组件是否能被check(选中),表示是否选中的状态。如:RadioButton(单选按钮)是可以被check的。

android:state_checked: 表示能不能选中,如:一个RadioButton可以被check了。

android:state_enabled: 能够接受触摸或者点击事件

注意:如果有多个item,那么程序将自动从上到下进行匹配,最先匹配的将得到应用。(不是通过最佳匹配)
如果一个item没有任何的状态说明,那么它将可以被任何一个状态匹配。


  • 用法介绍:

第一步,在目录 res新建一个drawable文件夹,或者直接写在drawable-hdpi 等,新建一个xml文件。

第二步,写好后直接生成模板,只要自己添加,相关属性。


第三步,在写好的main.xml文件中,定义的控件中去。
Android中 <wbr>selector(背景选择器)的作用和用法简介。


  • 给ListView设置Selector
  1. 创建mylist_view.xml文件

首先在res目录下新建drawable文件夹,再在新建的drawable文件夹中新建mylist_view.xml,其目录结构为:res/drawable/mylist_view.xml。

  1. 根据具体需求编辑mylist_view.xml文件
<?xml version="1.0" encoding="utf-8" ?>   
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
 
</selector>

下面就可以根据项目需求,在其内部定义为自己想要的样式了,主要属性如下:

<?xml version="1.0" encoding="utf-8" ?>   
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <!-- 默认时的背景图片-->  
    <item android:drawable="@drawable/pic1" />    
    
    <!-- 没有焦点时的背景图片 -->  
    <item android:state_window_focused="false"   
            android:drawable="@drawable/pic1" />   
            
    <!-- 非触摸模式下获得焦点并单击时的背景图片 -->  
    <item android:state_focused="true" android:state_pressed="true"   android:drawable= "@drawable/pic2" /> 
    
    <!-- 触摸模式下单击时的背景图片-->  
    <item android:state_focused="false" android:state_pressed="true"   android:drawable="@drawable/pic3" />  

    <!--选中时的图片背景-->  
    <item android:state_selected="true"   android:drawable="@drawable/pic4" />   
  
    <!--获得焦点时的图片背景-->  
    <item android:state_focused="true"   android:drawable="@drawable/pic5" />   
    
</selector>
  1. 引用mylist_view.xml文件

三种方法可以来引用刚才创建的文件:

(1)在ListView中添加如下属性代码

android:listSelector="@drawable/mylist_view"

(2)在ListView的item界面中添加如下属性代码

android:background="@drawable/mylist_view"

(3)利用JAVA代码直接编写

Drawable drawable = getResources().getDrawable(R.drawable.mylist_view); 
listView.setSelector(drawable);

为了防止列表拉黑的情况发生,需要在ListView中添加以下的属性代码

android:cacheColorHint="@android:color/transparent"

  • Selector是用来改变控件在不同状态(如:点击和不点击)下的行为,可以是颜色,或者上面的字。<shape>和<selector>在Android UI设计中经常用到。比如我们要自定义一个圆角Button,点击Button有些效果的变化,就要用到<shape>和<selector>。可以这样说,<shape>和<selector>在美化控件中的作用是至关重要。先来个例子
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_checked="true" ><!-- 选中状态 -->
        <layer-list ><!-- 将多个图片或两种效果按照顺序层叠起来 -->
            <item >
                <shape android:shape="rectangle"><!-- 可选rectagle矩形,oval椭圆,line水平直线,ring环形 -->
                    <stroke android:width="5dp"  android:color="#ff0000"/>
                </shape>
            </item>
            <item  android:bottom="5dp" >
                <shape android:shape="rectangle" >
                    <solid android:color="#fff"/><!--描边-->
                </shape>
            </item>
        </layer-list>
    </item>
    <item ><!-- 默认状态 -->
        <shape >
            <solid  android:color="@color/light_blue"/>
        </shape>
    </item>
</selector>
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,607评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,047评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,496评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,405评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,400评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,479评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,883评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,535评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,743评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,544评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,612评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,309评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,881评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,891评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,136评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,783评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,316评论 2 342

推荐阅读更多精彩内容