这是我在这里的第一篇文章。
我要在运行时更改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
?
提前致谢。
答案 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));