【发布时间】:2015-01-03 08:14:45
【问题描述】:
我有三个Buttons。我希望按钮在单击时更改颜色,然后如果再次单击该按钮,它会恢复为默认颜色。
问题:如果我点击第一个,它会改变颜色。但是,如果我单击第二个,它不会改变颜色。但是,如果我再点击第二次Button,它最终会改变颜色。有谁知道为什么第二个Button 在第一次点击时不会改变颜色?
注意:调试后我注意到点击第一个Button 后is_clicked 设置为1。所以当我点击第二个Button 时,它认为它已经改变了颜色并将其设置回默认值。有谁知道我如何正确设置is_clicked 标志?或者还有什么我应该做的吗?
int is_clicked = 0;
public void ButtonOnClick(View v) {
switch (v.getId()) {
case R.id.button1:
if (is_clicked == 1){
button_list.get(0).getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0x00000000));;
is_clicked--;
break;
}
if (is_clicked == 0){
button_list.get(0).getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0xFF00FF00));
is_clicked++;
break;
}
break;
case R.id.button2:
if (is_clicked == 1){
button_list.get(1).getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0x00000000));;
is_clicked--;
break;
}
if (is_clicked == 0){
button_list.get(1).getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0xFF00FF00));
is_clicked++;
break;
}
break;
case R.id.button3:
if (is_clicked == 1){
button_list.get(2).getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0x00000000));;
is_clicked--;
break;
}
if (is_clicked == 0){
button_list.get(2).getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0xFF00FF00));
is_clicked++;
break;
}
break;
}
}
【问题讨论】:
-
然后有三个 int is_clicked Like btn1_clicked,btn2_clicked,btn3_clicked
-
嗯,好提议。但是在我的程序中,我实际上有 50 个按钮。所以我希望我可以在所有情况下使用一个 is_clicked。为了这个例子和简单性,我只是将它缩短为三个按钮......
-
这样设置颜色是一种不好的做法,为什么你不使用
Selector,你可以通过2或3行代码来实现这一点 -
我以前从未使用过 Selector。如果只有几行代码,你能告诉我吗?
-
@user2456977 当然,我添加了一些代码
标签: android button colors onclick