1. 程式人生 > >Android 程式碼設定TextView 字型顏色--ColorStateList

Android 程式碼設定TextView 字型顏色--ColorStateList

很多時候需要給text設定點選字型顏色變化,最近做的專案有這個需求,不過得通過程式碼來動態寫。

首先通過xml如下:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_enabled="true" android:state_selected="true" android:color="@color/red"/>
    <item android:state_enabled
="true" android:state_selected="false" android:color="@color/gray"/>
<item android:state_pressed="true" android:color="@color/red"/> <item android:state_focused="true" android:color="@color/red"/> <item android:color="@color/gray"/> </selector>

只要在layout裡面給textview設定textColor就好了。但是有時候不得不通過程式碼生成,所以可以寫個工具類:

private static ColorStateList createColorStateList(String selected, String pressed, String normal) {
        int[] colors = new int[] { Color.parseColor(selected), Color.parseColor(pressed), Color.parseColor(normal) };
        int[][] states = new int[3][];
        states[0] = new int[] { android.R.attr.state_selected};
        states[1
] = new int[] { android.R.attr.state_pressed}; states[2] = new int[] {}; ColorStateList colorList = new ColorStateList(states, colors); return colorList; }

接著在Java程式碼中設定textView.setTextColor(createColorStateList("#ffffffff", "#ffffffee", "#ff44e6ff")); 即可。