@Override
public void onClick(View v) {
switch(v.getId()) {
case R.id.btnA:
runOnUiThread(new Thread(new Runnable() {
@Override
public void run() {
btnA.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.button_pressed));
btnB.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.colorPrimary));
btnC.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.colorPrimary));
btnD.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.colorPrimary));
}
}));
break;
case R.id.btnB:
runOnUiThread(new Thread(new Runnable() {
@Override
public void run() {
btnB.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.button_pressed));
btnA.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.colorPrimary));
btnC.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.colorPrimary));
btnD.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.colorPrimary));
}
}));
break;
}
所以我目前正在像这样实现我的代码,可以很好地完成工作,但是我有6个按钮,所以我必须这样做6次。我已经阅读了有关按钮数组的内容,并尝试实现它,但是无法使其工作。我不清楚我如何知道我单击了哪个按钮并将其更改为另一种颜色,而另一个未单击的按钮又恢复为默认颜色。
编辑:
抱歉,如果我不清楚,则此按钮用于多项选择。这些按钮在创建时已设置为默认值。如果我在另一个按钮之后单击另一个按钮,则不使用switch语句会使两个按钮具有相同的颜色,它们将具有相同的颜色。这更多是显示问题。
最佳答案
我想FredK的意思是这样的:
@Override
public void onClick(View v) {
runOnUiThread(new Thread(new Runnable() {
@Override
public void run() {
// Reset all buttons
btnA.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.colorPrimary));
btnB.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.colorPrimary));
btnC.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.colorPrimary));
btnD.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.colorPrimary));
.
.
.
btnZ.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.colorPrimary));
// Set only the clicked button
v.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.button_pressed));
}
}));
}
更新:
您还可以遍历ViewGroup,因此您无需手动写下每个Button。
ViewGroup viewGroup = (ViewGroup) v.getParent();
for(int i=0;i<viewGroup.getChildCount();i++){
Object child = viewGroup.getChildAt(i);
if(child instanceof Button){
((Button) child).setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.colorPrimary));
}
}