2013-02-04 47 views
-1

例如,如果背景为白色,则文字颜色将为黑色。如果BG是黑色的,文本将是白色的。蓝BG,黄文等 更新:如何在TextView中设置文本的自动翻转颜色?

// method in MyActivity class 
void changeBackgroundColor(int newColor) { 
    activityLayout.setBackgroundColor(newColor); 
    int invertingColor = ColorInvertor.invert(newColor); 
    someTextView.setTextColor(invertingColor); 
} 

如果我打电话activity.changeBackgroundColor(Color.WHITE),然后someTextView必须改变文字颜色为黑色,即ColorInvertor.invert(Color.WHITE) == Color.BLACKColorInvertor.invert(Color.BLACK) == Color.WHITE

+0

抱歉,这是一个程序员论坛,所以你不可能在这里得到应用程序使用的答案。请尝试[超级用户论坛](http://superuser.com/),其中提供了有关应用程序和操作系统使用的帮助。 –

+0

你有试过什么吗? – RobinHood

+0

会给更多的代码请 –

回答

2

让你的颜色的RGB值和255他们。减去:

yourColor = Color.rgb(0,130,20); 

invertedRed = 255 - 0; 
invertedGreen = 255 - 130; 
invertedBlue = 255 - 20; 

text.setTextColor(Color.rgb(invertedRed,invertedGreen,invertedBlue)); 

如果要使用十六进制值看How to get RGB value from hexadecimal color code in java

+0

谢谢!你帮我。 –

-1

有可能只需使用简单的条件

首先

1.Get颜色

2.检查条件

3.设定颜色

,使色彩:

TextView的TV1;

tv1 =(TextView)findViewById(R.id.tv1);

ColorDrawable tv1color =(ColorDrawable)tv1.getBackground();

如果您使用的是Android 3.0+,则可以获取颜色的资源ID。

int tv1colorId = tv1color.getColor();

设置颜色:

的TextView TV2;

tv2 =(TextView)findViewById(R.id.tv2);

tv2.setBackgroundColor(0xFF00FF00);

然后把一个条件,只要你想:

如果(tv1colorID == R.color.green){

tv2.setBackgroundColor(color.WHITE); //当你选择颜色

}

+0

不可能测试所有可能的颜色。 –

+0

如何,所有的颜色都有它的十六进制代码,你可以在条件下使用十六进制代码 –

相关问题