zoukankan      html  css  js  c++  java
  • Android学习_Selector

    Selector

    实现组件在不同状态下不同的文字颜色、背景颜色或图片的切换,使用十分方便。

    1.  创建方法

    第一种:在XML中直接创建selector的XML文件,容易掌握,简单但是不灵活,较为常用。

    <?xml version="1.0" encoding="utf-8"?>

    <selector xmlns:android="http://schemas.android.com/apk/res/android">

        <item android:drawable="@mipmap/tab_dictionary_clicked" android:state_selected="true" />

        <item android:drawable="@mipmap/tab_dictionary_normal" />

    </selector>

    第二种:在代码中动态创建selector,较为复杂,但是灵活,一般用在选择器状态改变频繁的情况下。

    2.  在XML中标签说明

    selector标签,可以添加一个或多个item子标签,而相应的状态是在item标签中定义的。

    定义的XML文件可以作为两种资源使用:drawable和color。

    3.  状态设置说明

    android:state_enabled                **设置触摸或点击事件是否可用状态**,一般只在false时设置该属性,表示不可用状态

    android:state_pressed                **设置是否按压状态**,一般在true时设置该属性,表示已按压状态,默认为false

    android:state_selected               **设置是否选中状态**,true表示已选中,false表示未选中

    android:state_checked:               **设置是否勾选状态**,主要用于CheckBox和RadioButton,true表示已被勾选,false表示未被勾选

    android:state_checkable              **设置勾选是否可用状态**,类似state_enabled,只是state_enabled会影响触摸或点击事件,state_checkable影响勾选事件

    android:state_focused                **设置是否获得焦点状态**,true表示获得焦点,默认为false,表示未获得焦点

    android:state_window_focused         **设置当前窗口是否获得焦点状态**,true表示获得焦点,false表示未获得焦点,例如拉下通知栏或弹出对话框时, 当前界面就会失去焦点;另外,ListView的ListItem获得焦点时也会触发true状态,可以理解为当前窗口就是ListItem本身

    android:state_activated              **设置是否被激活状态**,true表示被激活,false表示未激活,API Level 11及以上才支持,可通过代码调用控件的setActivated(boolean)方法设置是否激活该控件

    android:state_hovered                **设置是否鼠标在上面滑动的状态**,true表示鼠标在上面滑动,默认为false,API Level 14及以上才支持

    补充:selector标签下有两个比较有用的属性要说一下,添加了下面两个属性之后,则会在状态改变时出现淡入淡出效果,

    但必须在API Level 11及以上才支持

    android:exitFadeDuration             **状态改变时,旧状态消失时的淡出时间,以毫秒为单位**

    android:enterFadeDuration            **状态改变时,新状态展示时的淡入时间,以毫秒为单位**

    4.  注意

    selector作为drawable资源时,item指定android:drawable属性,并放于drawable目录下;

    selector作为color资源时,item指定android:color属性,并放于color目录下;

    color资源也可以放于drawable目录,引用时则用@drawable来引用,但不推荐这么做,drawable资源和color资源最好还是分开;

    android:drawable属性除了引用@drawable资源,也可以引用@color颜色值;但android:color只能引用@color;

    item是从上往下匹配的,如果匹配到一个item那它就将采用这个item,而不是采用最佳匹配的规则;所以设置默认的状态一定要写在最后,如果写在前面,则后面所有的item都不会起作用了。

  • 相关阅读:
    Java实现 LeetCode 50 Pow(x,n)
    Java实现 LeetCode 50 Pow(x,n)
    Java实现 LeetCode 49 字母异位词分组
    Java实现 LeetCode 49 字母异位词分组
    Java实现 LeetCode 49 字母异位词分组
    Java实现 LeetCode 48 旋转图像
    Java实现 LeetCode 48 旋转图像
    Java实现 LeetCode 48 旋转图像
    Java实现 LeetCode 47 全排列 II(二)
    Java实现 LeetCode 47 全排列 II(二)
  • 原文地址:https://www.cnblogs.com/pomodoro/p/11361891.html
Copyright © 2011-2022 走看看