我在布局中有3个按钮。我希望当点击一个按钮时,其他2个按钮的样式设置为"默认"。在我的例子中:背景颜色。 按下按钮1必须改变她的风格并重置其他按钮的样式。
最简单的解决方案是在每个方法调用上设置每个按钮的样式,但这是最简单的解决方案,如果图层只有2-5个按钮,但是如果有10-20个?
在drawable / button_bg.xml中,我有两个状态的选择器:default和state_selected。 是否可以立即重置(或设置)图层(布局)中所有按钮的所有样式而无需重新加载应用程序?
或者,如果未按下按钮,请指定默认样式?或类似layout.AllButtons.setDefaultStyle(true)(对不起) When click on one button, need to change styles for other
如您所见,在新点击其他按钮后,state_selected未重置。
答案 0 :(得分:0)
您可以通过迭代布局并设置所需的参数来手动完成,例如
private void unselectButtons(ViewGroup root, View except) {
int childCount = root.getChildCount()
for (int i=0; i < childCount; ++i) {
View child = root.getChildAt(i);
if (child instanceof ViewGroup) {
unselectButtons((ViewGroup)child,except);
} else if (child instanceof Button && child != except) {
child.setSelected(false);
}
}
}