【问题标题】:Align radio buttons horizontally and vertically in the same radiogroup在同一个单选组中水平和垂直对齐单选按钮
【发布时间】:2012-01-30 11:12:47
【问题描述】:

我想在一个单选组中有单选按钮,分为 2 列和多行。

到目前为止,我已经能够通过将 LinearLayouts 放在 radiogroup 中来划分它们。问题是当我点击它们时它们不是排他的(我可以同时检查所有这些)。有没有办法让它们独占(除了程序化方式)?

【问题讨论】:

    标签: android


    【解决方案1】:

    我带着一个稍微不同的问题来到这个页面。我想保持我所有的单选按钮水平。愿这对某人有所帮助。设置方向将负责将所有单选按钮放置在一行中。

    <RadioGroup
            android:id="@+id/commuteby"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_below="@+id/line0" >
    

    注意: 如果组件穿过屏幕,那么它也会将组件放置在同一行中。所以你的一些专栏可能会隐藏在小屏手机中。但是您可以为小屏幕创建另一个布局文件。

    【讨论】:

      【解决方案2】:

      按照以下步骤操作

      1. 为同一行/行中的 RadioButtons 创建水平 RadioGroup
      2. 如果您需要 2 行 RadioButtons,请按照步骤 1 操作两次
      3. 现在在 java 代码中使用下面的方法,(假设 2 行 RadioButton 表示 2 个 RadioGroup)

      .

      private void initView(){
          radioGroup.setOnCheckedChangeListener(radioGroup1CheckedChangeListener);
      
          radioGroup2.setOnCheckedChangeListener(radioGroup2CheckedChangeListener);
      }
      
      RadioGroup.OnCheckedChangeListener radioGroup1CheckedChangeListener = new RadioGroup.OnCheckedChangeListener() {
              @Override
              public void onCheckedChanged(RadioGroup radioGroup, int i) {
                  switch (i) {
                      case R.id.rb1:
                          radioGroup2.setOnCheckedChangeListener(null);
                          radioGroup2.clearCheck();               
      radioGroup2.setOnCheckedChangeListener(rgPaymentMethods2CheckedChangeListener);
                          break;
                      // more radiobutton id with same approach
                  }
              }
          };
      
      RadioGroup.OnCheckedChangeListener radioGroup2CheckedChangeListener = new RadioGroup.OnCheckedChangeListener() {
              @Override
              public void onCheckedChanged(RadioGroup radioGroup, int i) {
                  switch (i) {
                      case R.id.rb2:
                          radioGroup1.setOnCheckedChangeListener(null);
                          radioGroup1.clearCheck();
                          radioGroup1.setOnCheckedChangeListener(rgPaymentMethodsCheckedChangeListener);
                          break;
                      // more radiobutton id with same approach
                  }
              }
          };
      

      【讨论】:

        【解决方案3】:

        如果通过“编程方式”表示您只想使用 XML 来控制这些单选按钮,那么不。没有解决办法。

        “以编程方式”执行它应该很容易。

        【讨论】:

          猜你喜欢
          • 2020-08-18
          • 1970-01-01
          • 2014-03-17
          • 1970-01-01
          • 2020-07-23
          • 1970-01-01
          • 2012-08-31
          • 2014-07-27
          • 2017-10-28
          相关资源
          最近更新 更多