从一个onClick更改两个按钮的背景?

时间:2015-07-29 10:36:14

标签: android

我正在制作一个测验应用程序,因此我将有4个按钮,当用户点击错误的选项时,后台的背景将变为红色,而右侧的将变为绿色。

我尝试了很多方法,包括使用XML onClick,onClick监听器。我也尝试过处理程序,没有任何效果。

总是错误的按钮会变为红色但右边的按钮永远不会变为绿色。

....
....
mHandler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            ansButton.setBackgroundColor(Color.GREEN);
        }
    };

}

public void button1(View v){
    if(v.getId() != ansID)
        v.setBackgroundColor(Color.RED);
    mHandler.sendEmptyMessage(0);
}
public void button2(View v){
    if(v.getId() != ansID)
        v.setBackgroundColor(Color.RED);
    mHandler.sendEmptyMessage(0);
}
public void button3(View v){
    if(v.getId() != ansID)
        v.setBackgroundColor(Color.RED);
    mHandler.sendEmptyMessage(0);
}
public void button4(View v){
    if(v.getId() != ansID)
        v.setBackgroundColor(Color.RED);
    mHandler.sendEmptyMessage(0);
}
.....
.....

修改

在进一步测试中,我发现在button1 onClick方法上我只能调整button1而没有其他按钮,即使它们是成员变量。

3 个答案:

答案 0 :(得分:1)

尝试在更改背景颜色后调用background: white url(../images/pattern/overlay.png) repeat; border-bottom: 10px solid rgba(0,0,0,0);

答案 1 :(得分:0)

当你得到答案时,即。用户点击按钮,调用一个可以改变所有按钮颜色的方法。

changeTheButtonBg(View v){
   b1.setBackgroundColor(Color.RED);
   b2.setBackgroundColor(Color.RED); 
   b3.setBackgroundColor(Color.RED);
   b4.setBackgroundColor(Color.RED);
   findViewById(ansID).setBackgroundColor(Color.GREEN);
}

答案 2 :(得分:0)

以下是一个drawable的示例,默认情况下为白色,按下时为红色。您可以为错误的按钮执行红色,为正确的按钮执行绿色。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
          android:drawable="@android:color/red" /> <!-- pressed -->
    <item android:drawable="@android:color/white" /> <!-- default -->
</selector>

StateListDrawable完成,由XML中的selector表示。 http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList