Android StateListDrawable

StateListDrawable 是用于为各种控件设置不同的状态的 Drawable

StateListDrawable 属性

属性 说明
android:drawable 引用的 Drawable 位图, 把放到最前面,就表示组件的正常状态
android:state_focused 是否获得焦点
android:state_window_focused 是否获得窗口焦点
android:state_enabled 控件是否可用
android:state_checkable 控件可否被勾选,比如 checkbox
android:state_checked 控件是否被勾选
android:state_selected 控件是否被选择,针对有滚轮的情况
android:state_pressed 控件是否被按下
android:state_active 控件是否处于活动状态,eg:slidingTab
android:state_single 控件包含多个子控件时,确定是否只显示一个子控件
android:state_first 控件包含多个子控件时,确定第一个子控件是否处于显示状态
android:state_middle 控件包含多个子控件时,确定中间一个子控件是否处于显示状态
android:state_last 控件包含多个子控件时,确定最后一个子控件是否处于显示状态

范例: 圆角按钮


  1. 创建一个 空的 Android 项目 cn.twle.android.StateListDrawable

  2. 使用 shapeDrawable 画两个圆角矩形,差别只在于颜色

    res/drawable/shape_btn_normal.xml

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">
        <solid android:color="#DD788A"/>
        <corners android:radius="5dp"/>
        <padding android:top="2dp" android:bottom="2dp"/>
    </shape>
    

    res/drawable/shape_btn_pressed.xml

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">
        <solid android:color="#ff6096"/>
        <corners android:radius="5dp"/>
        <padding android:top="2dp" android:bottom="2dp"/>
    </shape>
    
  3. 使用 StateListDrawable 写两个 selector

    red/drawable/selector_btn.xml

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_pressed="true" android:drawable="@drawable/shape_btn_pressed"/>
        <item android:drawable="@drawable/shape_btn_normal"/>
    </selector>
    
  4. 修改 activity_main.xml ,给按钮设置属性 android:background="@drawable/selector_btn"

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <Button 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="16dp"
            android:text="登录"
            android:background="@drawable/selector_btn" />
    
    </LinearLayout>
    

Android 基础教程

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.