[转自]
android中设置TextView的颜色有方法setTextColor,这个方法被重载了,可以传入两种参数。
1 public void setTextColor(int color) { 2 mTextColor = ColorStateList.valueOf(color); 3 updateTextColors(); 4 } 5 6 public void setTextColor(ColorStateList colors) { 7 if (colors == null) { 8 throw new NullPointerException(); 9 }10 11 mTextColor = colors;12 updateTextColors();13 }
下边就分别写出怎么使用这两个方法设置TextView的颜色:
1 TextView tv = new TextView(this);2 tv.setText("Test set TextView's color.");3 //方案一:代码中通过argb值的方式4 tv.setTextColor(Color.rgb(255, 255, 255));
这种方法也就是传入int color值,这个int不是R文件中自动分配的int值,所以要注意。这是Color类中的静态方法构造出来的颜色int值。
1 Resources resource = (Resources) getBaseContext().getResources();2 ColorStateList csl = (ColorStateList) resource.getColorStateList(R.color.my_color);3 if (csl != null) {4 tv.setTextColor(csl);5 }
这种方法是通过ColorStateList得到xml中的配置的颜色的。好多需要xml中配置的都要类似这样的映射xml文件。
还有种方法:
1 XmlResourceParser xrp = getResources().getXml(R.color.my_color);2 try {3 ColorStateList csl = ColorStateList.createFromXml(getResources(), xrp);4 tv.setTextColor(csl);5 } catch (Exception e) {6 }
全部代码:
1 package com.txlong; 2 3 import android.app.Activity; 4 import android.graphics.Color; 5 import android.os.Bundle; 6 import android.widget.TextView; 7 8 public class ListViewDemoActivity extends Activity { 9 // private ListView listView;10 11 /** Called when the activity is first created. */12 @Override13 public void onCreate(Bundle savedInstanceState) {14 super.onCreate(savedInstanceState);15 16 TextView tv = new TextView(this);17 tv.setText("Test set TextView's color.");18 //方案一:通过ARGB值的方式19 /**20 * set the TextView color as the 0~255's ARGB,These component values21 * should be [0..255], but there is no range check performed, so if they22 * are out of range, the returned color is undefined23 */24 // tv.setTextColor(Color.rgb(255, 255, 255));25 /**26 * set the TextView color as the #RRGGBB #AARRGGBB 'red', 'blue',27 * 'green', 'black', 'white', 'gray', 'cyan', 'magenta', 'yellow',28 * 'lightgray', 'darkgray'29 */30 tv.setTextColor(Color.parseColor("#FFFFFF"));31 32 33 /** 原来不知道有上边的方法,就用这个笨笨方法了 */34 // String StrColor = null;35 // StrColor = "FFFFFFFF";36 // int length = StrColor.length();37 // if (length == 6) {38 // tv.setTextColor(Color.rgb(39 // Integer.valueOf(StrColor.substring(0, 2), 16),40 // Integer.valueOf(StrColor.substring(2, 4), 16),41 // Integer.valueOf(StrColor.substring(4, 6), 16)));42 // } else if (length == 8) {43 // tv.setTextColor(Color.argb(44 // Integer.valueOf(StrColor.substring(0, 2), 16),45 // Integer.valueOf(StrColor.substring(2, 4), 16),46 // Integer.valueOf(StrColor.substring(4, 6), 16),47 // Integer.valueOf(StrColor.substring(6, 8), 16)));48 // }49 50 //方案二:通过资源引用51 // tv.setTextColor(getResources().getColor(R.color.my_color));52 53 //方案三:通过资源文件写在String.xml中54 // Resources resource = (Resources) getBaseContext().getResources();55 // ColorStateList csl = (ColorStateList) resource.getColorStateList(R.color.my_color);56 // if (csl != null) {57 // tv.setTextColor(csl);58 // }59 60 //方案四:通过xml文件,如/res/text_color.xml61 // XmlPullParser xrp = getResources().getXml(R.color.text_color);62 // try {63 // ColorStateList csl = ColorStateList.createFromXml(getResources(), xrp);64 // tv.setTextColor(csl);65 // } catch (Exception e) {66 // }67 68 // listView = new ListView(this);69 //70 // Cursor cursor = getContentResolver().query(71 // Uri.parse("content://contacts/people"), null, null, null, null);72 //73 // startManagingCursor(cursor);74 //75 // ListAdapter listAdapter = new SimpleCursorAdapter(this,76 // android.R.layout.simple_expandable_list_item_2, cursor,77 // new String[] { "name", "name" }, new int[] {78 // android.R.id.text1, android.R.id.text2 });79 //80 // listView.setAdapter(listAdapter);81 // setContentView(listView);82 setContentView(tv);83 }84 }
String.xml文件为:
1 23 4 Hello World, ListViewDemoActivity! 5ListViewDemo 6 7#FFFFFF 8 9
/res/color/text_color.xml
1 23 4 - 5 6
- 7 8
- 9 10
- 11 12
- 13 14
- 15 16
- 17 18
- 19 20 21