2011-07-19 70 views
44

在给定的代码lbl [0] .getTextColor()给出了错误,但我不知道如何获得textview文本颜色的java文件,请帮助我。如何获得textview的文本颜色?

public void angry(View v) 
{ 
    if (lbl[0].getTextColor() == Color.BLACK) 
     lbl[0].setTextColor(Color.RED); 
    if (lbl[0].getTextColor() == Color.RED) 
     lbl[0].setTextColor(Color.BLACK); 
} 

谢谢。

回答

119

使用此

textView.getCurrentTextColor()

+0

ok谢谢JeffG –

7

还有就是要记住一件重要的事情:getCurrentTextColor()以及类似的方法,如getCurrentHintTextColor()和getHighlightColor()主要是用来定义颜色返回int值不是十六进制。这可能会更令人困惑,因为这是负数,例如红色是-65536,绿色是-16711936,白色是-1。

为简单起见,这是因为getCurrentTextColor()返回当前颜色和白色值之间的差(以十进制)减去1,表达式为:CurrentColor-(WhiteColor + 1),其中,白色是16777215 当然,对于标准颜色,您可以使用预定义的常量(如Color.GREEN或Color.MAGENTA),但知道您可以有效地使用getCurrentTextColor()作为任何颜色。

你可以阅读更多有关的设置,如果你使用的是contextcompat库设置为Android的新版本的颜色在http://android4beginners.com/2013/07/lesson-1-3-how-to-change-a-color-of-text-and-background-in-textview/

+9

不必要的混淆。 'getCurrentTextColor()'返回碰巧是一个整数的颜色值 - 存储在32个字节中。 4组8个字节。它不是十六进制也不是十进制,直到将其转换为字符串,并且不需要使用白色值进行任何计算。 – Tomasz

0

让颜色在Android中,你可能会得到一个悦目不同的值,那么什么是以上。这个测试对我有用,我使用以下设置测试颜色:

view.setTextColor(ContextCompat.getColor(ctx,color));

textColor =view.getCurrentTextColor(); 
    CoreApp.debug("viewutils", "green color: "+textColor); 
    assertThat(textColor, is(ContextCompat.getColor(mCtx, R.color.green)));