为布局中的不同文本视图设置不同的颜色不起作用

时间:2012-02-26 02:55:37

标签: android textview

我目前正在设置3个进入LinearLayout的文本视图(下面的代码)。但是,使用setColor方法分配的最后一种颜色似乎只适用于第一个textview,实际上会覆盖我最初为其设置的颜色。

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //setContentView(R.layout.main);

    TextView view1 = new TextView(this);
    view1.setText("I am view one");
    view1.setTextColor(ColorStateList.valueOf(Color.RED));
    view1.setTextSize(25);
    view1.setGravity(Gravity.CENTER);

    TextView view2 = new TextView(this);
    view2.setText("I am view two");
    view1.setTextColor(ColorStateList.valueOf(Color.BLUE));
    view2.setTextSize(30);
    view2.setGravity(Gravity.CENTER);

    TextView view3 = new TextView(this);
    view3.setText("I am view three");
    view1.setTextColor(ColorStateList.valueOf(Color.YELLOW));
    view3.setTextSize(50);
    view3.setGravity(Gravity.CENTER);


    LinearLayout myLinearLayout = new LinearLayout(this);
    myLinearLayout.setOrientation(LinearLayout.VERTICAL);
    myLinearLayout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
    myLinearLayout.setGravity(Gravity.CENTER);
    myLinearLayout.addView(view1);
    myLinearLayout.addView(view2);
    myLinearLayout.addView(view3);

    setContentView(myLinearLayout);

在这种情况下,view1为黄色,其他视图为灰色...红色和蓝色未应用于正确的视图。作为一个注释我最初刚刚尝试使用setColor,你可以看到我试图根据文档使用ColorStateList,但同样的结果适用。无论如何,我将如何强制在不同的文本视图上强制我想要的颜色?我知道这应该很容易,也许我只是在这里遗漏了一些东西。提前谢谢。

1 个答案:

答案 0 :(得分:4)

请注意您设置颜色的对象 - 似乎有一大堆复制粘贴留下。每个颜色分配都在view1完成,而您真正想要的是将第二个分配中的颜色设置为view2,将第三个分配中的颜色设置为view3

TextView view1 = new TextView(this);
view1.setText("I am view one");
view1.setTextColor(ColorStateList.valueOf(Color.RED));
view1.setTextSize(25);
view1.setGravity(Gravity.CENTER);

TextView view2 = new TextView(this);
view2.setText("I am view two");
view2.setTextColor(ColorStateList.valueOf(Color.BLUE)); // <-- view2
view2.setTextSize(30); 
view2.setGravity(Gravity.CENTER);

TextView view3 = new TextView(this);
view3.setText("I am view three");
view3.setTextColor(ColorStateList.valueOf(Color.YELLOW)); // <-- view3
view3.setTextSize(50);
view3.setGravity(Gravity.CENTER);

顺便说一句,在视图上简单调用.setColor(Color.RED)(或不同的颜色)就足够了。