一、Textiew动态改变颜色
概述:
- 使用selector为Textiew设置各个状态下的颜色
- 在代码中改变Textiew的颜色
- 在代码中setTextColor后如何还原selector中对Textiew的设定
1、使用selector为Textiew设置各个状态下的颜色
(1)在res/color文件夹下新建title_color.xml文件
<item android:color="#0099cc"/>表示文本一般状态下的颜色
pressed,focused,selected分别表示:按下,控件获得焦点
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_selected="true" android:color="#FF0000"/> <item android:state_focused="true" android:color="#FF0000"/> <item android:state_pressed="true" android:color="#FF0000"/> <item android:color="#0099cc"/> </selector>
(2)layout文件下的TextView:
<TextView android:id="@+id/hello" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" android:textColor="@color/title_color" />
(3)最后,这一步必不可少
private TextView tv1;
...
tv1=(TextView)findViewById(R.id.hello); tv1.setOnClickListener(null);
也可以给textview的背景设置选择器,而不是textview本身
<TextView android:id="@+id/notice" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/setting_item_selector" android:padding="15dp" android:text="消息通知" />
2、在代码中给Textiew设置颜色
(1)android自带的颜色:tv1.setTextColor(Color.BLUE);
(2)/ res/ values/ colors.xml中定义的颜色:
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="myGreen">#669966</color> </resources>
代码:
tv1.setTextColor(getResources().getColor(R.color.title_color));
xml中设置:
android:color="@color/myGreen"
(3)设置在/ res/ color/ title_color.xml下定义的颜色选择器
tv1.setTextColor(getResources().getColorStateList(R.color.title_color));
二、Button动态改变样式
1、 Button的三种状态:(pressed, focused, or niether)
2、在Button里为android:textColor设置颜色选择器,可以动态Button上的文本颜色,使用和Textiew改变颜色基本相同
3、设置Button更美观的样式,并动态变化
(1)4张图片
button.9.png button_disable.9.png button_down.9.png button_highlighted.9.png
(2)新建selector:preview_button_bg.xml
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_focused="true" android:state_enabled="true" android:drawable="@drawable/preview_button_highlighted" /> <item android:state_enabled="true" android:state_selected="true" android:drawable="@drawable/preview_button_highlighted" /> <item android:state_enabled="true" android:state_pressed="true" android:drawable="@drawable/preview_button_highlighted" /> <item android:state_enabled="false" android:drawable="@drawable/preview_button_disable" /> <item android:drawable="@drawable/preview_button" /> </selector>
(3) 为Button设置属性:
android:background="@drawable/preview_button_bg"
三、Imageiew的selector
<ImageView android:id="@+id/imageview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/tab_home_btn"> </ImageView>
selector:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/home_btn_bg" android:state_pressed="true"/> <item android:drawable="@drawable/icon_home_sel" android:state_selected="true"/> <item android:drawable="@drawable/icon_home_nor"/> </selector>
Done!