Android如何通过文本更改按钮颜色

时间:2016-03-25 07:05:10

标签: android css colors background drawable

我只想通过文本的值更改按钮的背景颜色。例如,当我将文本更改为:

button.setText("YES");

我想将按钮的背景颜色设置为 绿色 。 当我将文字改为:

button.setText("NO");

我想将按钮的背景颜色设置为 红色

当我在java代码中更改它时:

boolean textValueYES = true;
button.setBackgroundColor(textValueYES ? Color.GREEN : Color.RED);

该按钮丢失了其drawable.xml设置。 有没有办法将此检查添加到drawable xml? 或者按文本值设置背景颜色而不会丢失可绘制设置?

3 个答案:

答案 0 :(得分:4)

您可以为红色和绿色背景颜色创建两个可绘制的xml,并以编程方式设置该xml。

button.setBackgroundResource(textValueYES ? R.drawable.green : R.drawable.red);

答案 1 :(得分:3)

你必须这样做,只需写下setText()

button.setText("YES");
setBackgroundResource(R.color.green);

以及何时

button.setText("NO");
setBackgroundResource(R.color.red);

答案 2 :(得分:1)

我在我的java文件中喜欢这个

    final Button btn_showtouch = (Button)findViewById(R.id.button);
    btn_showtouch.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            if((btn_showtouch.getText()).equals("YES")) {
                btn_showtouch.setBackgroundColor(Color.GREEN);
                btn_showtouch.setText("NO");
            }else if(btn_showtouch.getText().equals("NO")) {
                btn_showtouch.setBackgroundColor(Color.CYAN);
                btn_showtouch.setText("YES");
            }

        }
    });
}

和你的XML文件一样

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="YES"
    android:id="@+id/button"
    android:layout_below="@+id/textView"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_marginTop="62dp" />

它对我有用,我希望这会对你有所帮助