如何获取 TextView 的文本颜色?

70
在给定的代码中,lbl[0].getTextColor()出错了,但我不知道如何在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);
}   

谢谢。

4个回答

179

使用此方法:

textView.getCurrentTextColor()


16
重要的一点需要记住:getCurrentTextColor()以及类似的方法,比如getCurrentHintTextColor()和getHighlightColor()返回int值而不是十六进制值,主要用于定义颜色。这可能会更加令人困惑,因为它是负数,例如红色是-65536,绿色是-16711936,白色是-1。
简单地说,这是因为getCurrentTextColor()返回当前颜色值与白色值(两者都是十进制)之间的差值再减去1。表达式是:CurrentColor -(WhiteColor + 1),其中白色是16777215。 当然,对于标准颜色,您可以使用预定义的常量,如Color.GREEN或Color.MAGENTA, 但是知道您可以有效地使用getCurrentTextColor()来获得任何颜色信息将更有用。
您可以在http://android4beginners.com/2013/07/lesson-1-3-how-to-change-a-color-of-text-and-background-in-textview/上了解更多有关在Android中设置和获取颜色的信息。

13
不必要的混淆。'getCurrentTextColor()'返回颜色值,该值恰好是一个存储在32个字节上的整数。4组8个字节。它既不是十六进制也不是十进制,除非您将其转换为字符串,否则您不需要对白色值进行任何计算。 - Tomasz

10

你可以从 TextView 中获取颜色代码。

int color=tv.getCurrentTextColor();
String hexColor = String.format("#%06X", (0xFFFFFF & color));

2

如果您正在使用contextcompat库为新版本的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)));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接