如何重置其他视图样式(按钮)或立即重置布局中的所有按钮背景?

时间:2016-01-21 21:52:22

标签: android android-layout

我在布局中有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未重置。

1 个答案:

答案 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);
      }

   }


}