ColorStateList button text color change of Android learning

 

 

API

 

Windows platform VC, for different button states, uses different colors to display text, which is more complicated to implement, and generally has to draw buttons by itself. But it is very convenient to implement in Android. 

We first add a ColorStateList resource XML file, the XML file is saved in res/color/button_text.xml:

Java code 
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <selector xmlns:android="http://schemas.android.com/apk/res/android">  
  3.     <item android:state_pressed="true"  
  4.           android:color="#ffff0000"/> <!-- pressed -->  
  5.     <item android:state_focused="true"  
  6.           android:color="#ff0000ff"/> <!-- focused -->  
  7.     <item android:color="#ff000000"/> <!-- default -->  
  8. </selector>  

 

Java code 
  1. Button btn=(Button)findViewById(R.id.btn);  
  2. Resources resource=(Resources)getBaseContext().getResources();   
  3. ColorStateList csl=(ColorStateList)resource.getColorStateList(R.color.button_text);  
  4. if(csl!=null){  
  5.      btn.setTextColor(color_state_list); //Set the button text color  
  6. }  

 

Or it can be like this:

 

 

Java code   Favorite code
  1. XmlResourceParser xpp=Resources.getSystem().getXml(R.color.button_text);   
  2. try {  
  3.      ColorStateList csl= ColorStateList.createFromXml(getResources(),xpp);  
  4.      btn.setTextColor(csl);  
  5. catch (Exception e) {  
  6.      // TODO: handle exception  
  7. }  

 

Finally, attach all possible states:

Java code   Favorite code
  1. <?xml version="1.0" encoding="utf-8"?>  
  2.    <selector xmlns:android="http://schemas.android.com/apk/res/android" >  
  3.        <item  
  4.            android:color="hex_color"  
  5.            android:state_pressed=["true" | "false"]  
  6.            android:state_focused=["true" | "false"]  
  7.            android:state_selected=["true" | "false"]  
  8.            android:state_active=["true" | "false"]  
  9.            android:state_checkable=["true" | "false"]  
  10.            android:state_checked=["true" | "false"]  
  11.            android:state_enabled=["true" | "false"]  
  12.            android:state_window_focused=["true" | "false"] />  
  13.    </selector>  

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325162889&siteId=291194637