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 | 控件包含多个子控件时,确定最后一个子控件是否处于显示状态 |
范例: 圆角按钮
-
创建一个 空的 Android 项目
cn.twle.android.StateListDrawable
-
使用
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>
-
使用
StateListDrawable
写两个 selectorred/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>
-
修改
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>