0

情况如下:我有 4 个单选按钮,它们不是单选组的成员。那是因为 RadioGroup 默认情况下以垂直顺序放置子级,并且不能将它们相对于彼此放置。现在,我正在检查所有单选按钮。我想要实现的是控制他们的选中状态,以便当一个被选中(true)时,其他选中状态自动设置为 false。小部件是独立的布局元素,所以我想我必须找到一种方法将它们全部组合在一起。我通过使用 isChecked 和 setChecked 内置方法使用简单的 if..else if 函数对 4 个 RadioButton 变量进行了尝试。然后我尝试将它们分组到 Radiobutton[] 数组中,并使用 switch-case 循环循环到 array.length。没有任何效果。现在堆叠 2 天。任何帮助表示赞赏。

谢谢回复,我再解释一下。我有 4 个 imageViews 和 4 个 radioButtons 正好在每一个之下,在一个 RelativeLayout 父级,以便用户可以选择他喜欢的图像。imageViews 不是垂直放置的,radioButtons 也是如此。这就是为什么我不想使用radioGroup。我可以使用 LinearLayout 并将 imageViews 放置在垂直方向,并将 radioButtons 放在一组旁边。默认情况下,每个单选按钮检查状态都是假的,当我检查它时,它变为真。问题是我可以检查所有的 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);
      }
    }
4

1 回答 1

1
  • 不清楚什么不起作用,请添加详细信息
  • 话虽如此,我建议您更改技术并使用 RadioGroup,只需将其扩展并修改为您需要的内容,或者从 AOSP 获取它的源代码,而不是让它扩展 LinearLayout,您可以扩展您更愿意使用的其他东西
于 2015-02-19T13:20:17.830 回答