如何控制文字的对比度?

时间:2011-04-22 22:28:00

标签: android colors contrast invert

当背景发生变化时,如何更改文本的颜色对比度?例如,如果我有黑色背景,则不会看到黑色文本。

1 个答案:

答案 0 :(得分:3)

这可能会有所帮助:http://developer.android.com/guide/topics/resources/color-list-resource.html

这是一种可以根据特定情况设置颜色的方法。

例如,假设您有一个TextView,您希望在启用时具有白色文本,并在禁用时使用黑色文本。您可以使用上面链接中的引用在xml文件中设置它,然后在您定义TextView的xml布局中将android:textColor设置为@ color / my_text_color。 (my_text_color是您创建的xml颜色列表文件)

然后,当TextView从启用更改为禁用(或者您最终在xml文件中设置的任何内容)时,颜色也会自动更改。

这是一种方法。但是,您可能希望尝试澄清您要查找的内容,因为在您的问题中并不完全清楚。

<强>更新

在Matt的评论之后,这里有一个方法可以用来获得反转的颜色值。可能有更好的方法,但这应该有效。

private int getInverseColor(int color){
    int red = Color.red(color);
    int green = Color.green(color);
    int blue = Color.blue(color);
    int alpha = Color.alpha(color);
    return Color.argb(alpha, 255-red, 255-green, 255-blue);
}

您可以使用getTextColor()方法之一以编程方式从TextView等视图中获取颜色int。您可能需要修改颜色状态列表,就像我链接到上面一样,以获得您想要的颜色。然后将该颜色传递给上面的方法以获得反转的颜色int并使用setTextColor()方法之一设置它。