我正在制作一个测验应用程序,因此我将有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而没有其他按钮,即使它们是成员变量。
答案 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