我有一组按钮:
[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文件中定义),然后取消选择所有其他按钮,以便最多在一个按钮上标记为“已选择”时间。
选择部分有效,但按钮不会以适当的颜色重新绘制,因此看起来选择了两个按钮!
我尝试过invalidate和requestLayout,但这没有帮助。有什么建议吗?
编辑:在更多地考虑之后,这里要问的真正问题是:
如何从onClick方法更新不是视图的视图?
在我的例子中,当我选择button1时,我希望能够从按钮2-6中删除选择,但由于按钮2-6不是被调用的视图,它们显示正确的选择值(它们未被选中) )但不要将其UI视图更新为“未选择”颜色!
答案 0 :(得分:0)
设置按钮的选定状态后,您可以在每个按钮上调用“invalidate()”函数,强制它们在下一个循环中更新。