@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语句会使两个按钮的颜色相同,如果我点击另一个按钮后,它们将是相同的颜色。这更像是一个显示问题..
答案 0 :(得分:1)
无需切换声明。只需将所有按钮设置为默认颜色,然后将所选按钮设置为所选颜色。
答案 1 :(得分:1)
考虑将测试移至setBackgroundColor
来电,并将其全部保存在一个new Runnable
@Override
public void onClick(View v) {
runOnUiThread(new Thread(new Runnable() {
@Override
public void run() {
btnA.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), (v.getId() == R.id.btnA ? R.color.button_pressed : R.color.colorPrimary));
btnB.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), (v.getId() == R.id.btnB ? R.color.button_pressed : R.color.colorPrimary));
...
答案 2 :(得分:0)
我想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));
}
}