RadioButton isChecked控制状态android

时间:2015-02-19 13:12:54

标签: controls state checked android-radiobutton

情况就是这样:我有4个radioButtons 不是 radioGroup的成员。多数民众赞成因为RadioGroup默认将儿童放在垂直顺序,不能相互放置。现在,我检查所有的radioButtons。我想要实现的是控制它们的检查状态,这样当检查一个(true)时,其他检查状态自动设置为false。小部件是独立的布局元素,所以我想我必须找到一种方法将它们组合在一起。我通过使用isChecked和setChecked内置方法使用简单的if..else if函数编码4个RadioButton变量来尝试它。然后我尝试在Radiobutton []数组中对它们进行分组,并使用switch-case循环循环到array.length。什么都行不通。 现在堆叠2天。任何帮助表示赞赏。

感谢您的回复,我进一步解释。我在RelativeLayout父级中有4个imageViews和4个radioButton,每个都在下面,这样用户就可以选择他喜欢的图像。 imageViews不是垂直放置的,radioButtons也是如此。这就是为什么我不想使用radioGroup。我可以使用LinearLayout并将imageViews置于垂直方向,并将一组中的radioButtons放在它们旁边。默认情况下,每个radioButton检查状态都为false,当我检查它时,它变为true。问题是我可以检查所有的radioButtons 。我想要的是当我选择一个RadioButton时,其他的将自动取消选中,这样任何时候都只能检查一个。 这是片段:

    private RadioButton rbtnWater;
    private RadioButton rbtnRoad;
    private RadioButton rbtnBoy;
    private RadioButton rbtnLeft;

    rbtnWater = (RadioButton) findViewById(R.id.rbtnWater);
    rbtnRoad = (RadioButton) findViewById(R.id.rbtnRoad);
    rbtnBoy = (RadioButton)findViewById(R.id.rbtnBoy);
    rbtnLeft = (RadioButton) findViewById(R.id.rbtnLeft)

          //method called at onClick attribute (XML)
      public void checkState(View v) {

      if (rbtnWater.isChecked()) {
          rbtnLeft.setChecked(false);
          rbtnBoy.setChecked(false);
          rbtnRoad.setChecked(false);
      }
      else if (rbtnLeft.isChecked()) {
          rbtnBoy.setChecked(false);
          rbtnWater.setChecked(false);
          rbtnRoad.setChecked(false);
      }
      else if (rbtnBoy.isChecked()) {
          rbtnWater.setChecked(false);
          rbtnRoad.setChecked(false);
          rbtnLeft.setChecked(false);
      }
      else if (rbtnRoad.isChecked()) {
          rbtnWater.setChecked(false);
          rbtnBoy.setChecked(false);
          rbtnLeft.setChecked(false);
      }
    }

1 个答案:

答案 0 :(得分:1)

  • 不清楚什么不起作用,请添加详细信息
  • 话虽如此,我建议你改变技术并使用RadioGroup,只需扩展它并修改你需要的东西或从AOSP获取它的源代码,而不是让它扩展一个LinearLayout你可以扩展别的东西你宁愿与
  • 合作