属性
打开Button的类(SDK\platforms\android-32\android.jar!\android\widget\Button.class) ,可以看出button继承TextView。可以使用TextView大部分属性。
StateListDrawable 属性
我的理解是这些属性有些类似web开发中css样式。
StateListDrawable是Drawable资源的一种,可以根据不同的状态,设置不同的图片效果,关
键节点< selector>
常用属性
- state_focused:是否获得焦点
- state_pressed:控件是否被按下
- state_enabled:控件是否可用
不常用属性
- state_selected:控件是否被选择,针对有滚轮的情况
- state_checked:控件是否被勾选
- state_checkable:控件可否被勾选,eg:checkbox
- state_window_ focused:是否获得窗口焦点
- state_active:控件是否处于活动状态,eg:slidingTab
- state_single:控件包含多个子控件时,确定是否只显示一个子控件
- state_first:控件包含多个子控件时,确定第一个子控件是否 处于显示状态
- state_middle:控 件包含多个子控件时,确定中间- -个子控件是否处于显示状态
- state_last:控件包含多个子控件时,确定最后-一个子控件是否处于显示状态
创建
题目:按钮被按下的时候图标背景变化。
选择“drawable”->右键“New”->“Drawable Resource File”
文件 drawable/btn_selector_press.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ic_baseline_5g_24" android:state_pressed="true"></item>
<item android:drawable="@drawable/ic_baseline_accessible_forward_24"></item>
</selector>
layout/activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<Button
android:text="@string/btn_one"
android:textSize="30sp"
android:layout_width="200dp"
android:layout_height="200dp"
android:background="@drawable/btn_selector_press"
android:textColor="@color/btn_selector_color"
/>
</LinearLayout>
其中textColor一样。
首先见一个color文件,然后右键“New”->“Drawable Resource File”
文件 color/btn_selector_color.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/red" android:state_pressed="true"></item>
<item android:color="@color/green"></item>
</selector>