0

我是 android 新手,所以这个问题可能看起来很菜鸟。我的目标是有一个单击按钮,如果当前为绿色,则将其自己的背景颜色更改为红色,如果当前为红色,则更改为蓝色,如果为蓝色,则更改为绿色。

我有一个按钮:

    <Button
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:onClick="toggleColor"
        android:text="@string/foo" />

在 MainActivity 我有:

public void onClickCard(View view) {
    if (view.getBGColor == green) {
        view.setBGColor(red);
    }
    // ...so on
}

我不知道如何获取按钮的当前颜色。请帮忙,谢谢!

4

3 回答 3

1

在您的活动中,声明这些字段,

    private enum ColorCodes {
        RED,
        GREEN,
        BLUE,
        YELLOW
    }

//我假设你的xml中默认有红色

 private ColorCodes colorCodes = ColorCodes.RED;

然后做这样的事情:

public void onClickCard(View view) {
        switch (colorCodes) {
        case RED:
            view.setBackgroundResource(blue);
            colorCodes = ColorCodes.BLUE;
            break;
        case GREEN:
            view.setBackgroundResource(yellow);
            colorCodes = ColorCodes.YELLOW;
            break;
        case BLUE:
            view.setBackgroundResource(red);
            colorCodes = ColorCodes.RED;
            break;
        case YELLOW:
            view.setBackgroundResource(green);
            colorCodes = ColorCodes.GREEN;
                break;
        }
    }
于 2013-05-30T10:12:04.043 回答
1

尝试这个..

  public void onClick(View view) {

            ColorDrawable buttonColor = (ColorDrawable) view.getBackground();                    
            int colorId = buttonColor.getColor();                   

            if (colorId==Color.GREEN) {
                view.setBackgroundColor(Color.RED);
            }

        }
于 2013-05-30T10:16:51.393 回答
0

更好的方法是使用LevelListDrawables你可以在使用getBackground()来检查背景的级别并根据它进行更改。

于 2013-05-30T10:07:49.473 回答