背景图语法如下:
- <?xml version="1.0" encoding="utf-8" ?>
- <selector xmlns:android="http://schemas.android.com/apk/res/android">
- <!-- 没有焦点时的背景图片 -->
- <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" />
- <!-- 默认时的背景图片!!!默认必须放在最后,否则只显示默认!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!-->
- <item android:drawable="@drawable/pic1" />
- </selector>
Item顺序是有讲究的,条件限定越细致,则应该放到前面,所以默认只能放在最后
背景颜色语法如下:
<?xmlversion="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:constantSize=["true" | "false"]//drawable的大小是否当中状态变化,true表示是变化,false表示不变换,默认为false
android:dither=["true" | "false"]//当位图与屏幕的像素配置不一样时(例如,一个ARGB为8888的位图与RGB为555的屏幕)会自行递色(dither)。设置为false时不可递色。默认true
android:variablePadding=["true" | "false"]>//内边距是否变化,默认false
<item android:drawable="@[package:]drawable/drawable_resource"//图片资源
android:state_pressed=["true" | "false"]//是否触摸
android:state_focused=["true" | "false"]//是否获取到焦点
android:state_hovered=["true" | "false"]//光标是否经过
android:state_selected=["true" | "false"]//是否选中
android:state_checkable=["true" | "false"]//是否可勾选
android:state_checked=["true" | "false"]//是否勾选
android:state_enabled=["true" | "false"]//是否可用
android:state_activated=["true" | "false"]//是否激活
android:state_window_focused=["true" | "false"] />//所在窗口是否获取焦点
</selector>
大概用法同背景图
例子:
xml布局
<TextView
android:id="@+id/fragment_one"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="2"
android:gravity="center"
android:textColor="@drawable/second"/>
<Button
android:id="@+id/button_selector"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:textColor="@drawable/four"
android:text="button"/>
Java控制xml布局
textView1= (TextView) view.findViewById(R.id.fragment_one);
//textView1.setSelected(false);
button= (Button) view.findViewById(R.id.button_selector);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//TextView textView1= (TextView) view.findViewById(R.id.fragment_one);
textView1.setSelected(true);
}
});
(second.xml)
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="@color/green"/>
<item android:color="@color/red"/>
</selector>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="@color/green"/>
<item android:color="@color/red"/>
</selector>
注:用.setSelected()方法可以控制被选中的状态