我想通过函数getColor()设置TextView的颜色。我尝试了很多不同的方法,但我无法让它发挥作用。我的代码无法编译。
import java.awt.*;
import android.graphics.Color;
public class test extends Activity {
TextView text1 = (TextView) findViewById(R.id.text1);
text1.setTextColor(getcolorss(1));
public Color getColor(int x) {
switch(x) {
case 1: return Color.BLUE;
case 2: return Color.RED;
}
}
}
你会怎么做?
答案 0 :(得分:3)
有很多方法可以做到这一点。查看android.graphics.Color
,RED
,BLUE
等仅仅是int
个常量。因此,我们可以这样:
int[] pallete = { Color.BLUE, Color.RED };
然后简单地说:
return pallete[x];
当throw ArrayIndexOutOfBoundsException
超出范围时,这自然会x
。您可以检查它并做其他事情,如果这是你想要的。请注意,Java中的数组是从0开始的,这意味着给出了上述声明:
pallete[0] == Color.BLUE
pallete[1] == Color.RED
原始代码使用基于1的索引,因此如果需要,您可以进行简单的翻译:
return pallete[x-1];
答案 1 :(得分:2)
你不能这样做,因为如果你打电话给getcolorss(3),那么就没有返回声明。 尝试:
public Color getcolorss(int x)
{
switch(x)
{
case 1: return Color.BLUE;
case 2: return Color.RED;
default: return null;
}
}
或
public Color getcolorss(int x)
{
Color result = null;
switch(x)
{
case 1: result = Color.BLUE;
case 2: result = Color.RED;
}
// this allows you to do something else here, if you require something more complex
return result;
}