TextView:无法在运行时更改文本颜色

时间:2011-06-24 11:11:19

标签: android colors textview

这是我在这里的第一篇文章。 我要在运行时更改TextView's文本颜色。有一个方法TextView.setTextColor(int),但它不适用于不在资源中的int值。

例如,运行时计算的颜色,例如0xFF0000 (RGB)R.color中不存在的颜色不起作用。 TextView未呈现 我已经看过这个Android的源代码,有两种方法,它们都没有接受rgb int values作为参数:

/**
 * Sets the text color for all the states (normal, selected,
 * focused) to be this color.
 *
 * @attr ref android.R.styleable#TextView_textColor
 */
@android.view.RemotableViewMethod
public void setTextColor(int color) {
    mTextColor = ColorStateList.valueOf(color);
    updateTextColors();
}

/**
 * Sets the text color.
 *
 * @attr ref android.R.styleable#TextView_textColor
 */
public void setTextColor(ColorStateList colors) {
    if (colors == null) {
        throw new NullPointerException();
    }

    mTextColor = colors;
    updateTextColors();
}

所以没有办法做到这一点?也许延长TextView

提前致谢。

3 个答案:

答案 0 :(得分:6)

我认为问题可能是你没有设置颜色的alpha值。

TextView.setTextColor()不接受0xRRGGBB值。相反,它接受0xAARRGGBB。每当你放"0xFF0000"时,你实际上给的是值"0x00FF0000",它给它的alpha值为“0”,这就是为什么TextView没有呈现的原因。因此,不要使用0xFF0000,而是尝试将其设置为0xFFFF0000。

或者,您可以使用Android的Color类。方法“Color.rgb(int,int,int)”隐式指定alpha值为255,因此调用"Color.rgb(255, 0, 0)"应该为文本生成红色值。

答案 1 :(得分:3)

试试这个

TextView的实例并调用setTextColor方法

假设你有一个带有my myTextView的TextView,那么首先得到它的实例

TextView myText = (TextView) findViewById(R.id.myTextView);

然后调用setTextColor方法

myText .setTextColor(android.graphics.Color.RED);

OR

myText .setTextColor(android.graphics.Color.rgb(int red,int green,int blue);

答案 2 :(得分:1)

尝试以下

textView.setTextColor(Color.rgb(0,0,0));