我有一套按钮:
[Button1]
[Button2]
[Button3]
[Button4]
[Button5]
[Button6]它们都共享相同的onClick方法:
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Button b = (Button) v;
Button comp;
int i = b.getId();
selected[i] = !selected[i];
b.setSelected(selected[i]);
for (int j = 0; j < 6; j++) {
if (i != j) {
selected[j] = false;
comp = lifestyleButtonArray.get(j);
if(comp.isSelected())
comp.setSelected(selected[j]);
Log.w(TAG,"[Button] selection for button #"+j+"="+selected[j]);
}
}
}
});onClick方法的第一部分按预期工作。单击按钮时,切换按钮的“选择”值,以更改按钮的颜色(定义在可绘制的xml文件中),然后取消选择所有其他按钮,以便一次最多只选中一个按钮。
选择部分工作,但按钮没有重新绘制与适当的颜色,所以它似乎两个按钮被选中!
我尝试过无效和requestLayout,但这并没有帮助。有什么建议吗?
编辑:在对此作了更多的思考之后,这里要问的真正问题是:
如何更新不是来自onClick方法的视图?
在我的示例中,当我选择button1时,我希望能够从按钮2-6中删除选择,但是由于按钮2-6不是被调用的视图,它们显示正确的选定值(它们是未选中的),但不要将它们的UI视图更新为‘非选定’颜色!
发布于 2011-12-14 22:01:18
在设置按钮的选定状态后,您可能会调用每个按钮上的“失效()”函数,以迫使它们在下一个周期中进行更新。
https://stackoverflow.com/questions/8509092
复制相似问题