如何在无线电组中对齐无线电按钮

时间:2015-09-29 14:19:47

标签: android

我有一个放射线组,其中有4个radiobuttons。我希望它们对齐为两条水平线,即水平放置两个radiobutton,水平放置另外两个radiobuttons,放在第一个水平放射线按钮下方。

如何在不改变其功能的情况下完成此任务

这意味着只能选择一个单选按钮。

这是我的简单代码:

<RadioGroup
    android:id="@+id/radiogroup_relation_options"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/HeadingText"
    android:background="#4269c6" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="vertical" >

            <RadioButton
                android:id="@+id/radiobutton_friend"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:layout_marginTop="5dp"
                android:button="@drawable/custom_radiobutton"
                android:padding="5dp"
                android:paddingLeft="10dp"
                android:text="Friend"
                android:textSize="15sp" />

            <RadioButton
                android:id="@+id/radiobutton_business"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:layout_marginTop="5dp"
                android:button="@drawable/custom_radiobutton"
                android:padding="5dp"
                android:paddingLeft="10dp"
                android:text="We&apos;ve done Business Together"
                android:textSize="15sp" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="vertical" >

            <RadioButton
                android:id="@+id/radiobutton_colleague"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:layout_marginTop="5dp"
                android:button="@drawable/custom_radiobutton"
                android:padding="5dp"
                android:paddingLeft="10dp"
                android:text="Colleague"
                android:textSize="15sp" />

            <RadioButton
                android:id="@+id/radiobutton_other"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:layout_marginTop="5dp"
                android:button="@drawable/custom_radiobutton"
                android:padding="5dp"
                android:paddingLeft="10dp"
                android:text="Other"
                android:textSize="15sp" />
        </LinearLayout>
    </LinearLayout>
</RadioGroup>

5 个答案:

答案 0 :(得分:1)

这是另一个简单的解决方案。

<强> main_activity.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical"
  tools:context=".MainActivity">


<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <RadioButton
        android:id="@+id/one_radio_btn"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.5"
        android:text="one" />

    <RadioButton
        android:id="@+id/two_radio_btn"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.5"
        android:text="two" />
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <RadioButton
        android:id="@+id/three_radio_btn"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.5"
        android:text="three" />

    <RadioButton
        android:id="@+id/four_radio_btn"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.5"
        android:text="four" />
   </LinearLayout>
</LinearLayout>

<强> MainActivity.java

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

  private RadioButton mOneRadioButton;
  private RadioButton mTwoRadioButton;
  private RadioButton mThreeRadioButton;
  private RadioButton mFourRadioButton;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mOneRadioButton = (RadioButton) findViewById(R.id.one_radio_btn);
    mTwoRadioButton = (RadioButton) findViewById(R.id.two_radio_btn);
    mThreeRadioButton = (RadioButton) findViewById(R.id.three_radio_btn);
    mFourRadioButton = (RadioButton) findViewById(R.id.four_radio_btn);

    mOneRadioButton.setOnClickListener(this);
    mTwoRadioButton.setOnClickListener(this);
    mThreeRadioButton.setOnClickListener(this);
    mFourRadioButton.setOnClickListener(this);

}

@Override
public void onClick(View v) {
    int id = v.getId();
    switch (id) {
        case R.id.one_radio_btn:
            mOneRadioButton.setChecked(true);
            mTwoRadioButton.setChecked(false);
            mThreeRadioButton.setChecked(false);
            mFourRadioButton.setChecked(false);

            break;
        case R.id.two_radio_btn:

            mOneRadioButton.setChecked(false);
            mTwoRadioButton.setChecked(true);
            mThreeRadioButton.setChecked(false);
            mFourRadioButton.setChecked(false);
            break;
        case R.id.three_radio_btn:

            mOneRadioButton.setChecked(false);
            mTwoRadioButton.setChecked(false);
            mThreeRadioButton.setChecked(true);
            mFourRadioButton.setChecked(false);
            break;
        case R.id.four_radio_btn:

            mOneRadioButton.setChecked(true);
            mTwoRadioButton.setChecked(false);
            mThreeRadioButton.setChecked(false);
            mFourRadioButton.setChecked(true);
            break;

    }
  }
}

答案 1 :(得分:0)

RadioGroup是LinearLayout的子类,如果你希望它支持多行,那么需要覆盖它,但现在有这样的小部件可以使用:MultiLineRadioGroup,帮助样本可以帮助你。

答案 2 :(得分:0)

你可以通过使用2个radioGroups来实现这个目标

  1. 使用RadioGroup
  2. 创建android:orientation = "horizontal"
  3. 放入2个单选按钮。
  4. 创建与上面相同的另一个RadioGroup
  5. 确保RadioGroupsRadioButtons的ID不同。
  6. 使用setOnCheckedChangeListener在两个组上设置相同的OnCheckedChangeListener

    //assuming activity implements OnCheckedChangeListener rg1.setOnCheckedChangeListener(this); rg2.setOnCheckedChangeListener(this);

  7. 在其他广播组上调用clearCheck(如果已在第2组中执行检查,则为第1组)

  8. 在执行操作时检查两个组是否已检查RadioButton

答案 3 :(得分:0)

尝试两种不同的LinearLayout:

<RadioGroup
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1">

            <RadioButton
                android:id="@+id/radioButton1"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1" />

            <RadioButton
                android:id="@+id/radioButton2"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1" />

        </LinearLayout>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:orientation="horizontal">

            <RadioButton
                android:id="@+id/radioButton3"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1" />

            <RadioButton
                android:id="@+id/radioButton4"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1" />


        </LinearLayout>

    </RadioGroup>

答案 4 :(得分:0)

试试这个并告诉我它是否符合要求。

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/tableLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
<RadioGroup
    android:id="@+id/radiogroup_relation_options"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/HeadingText"
    android:background="#4269c6" >

    <!-- 2 columns -->
    <TableRow
        android:id="@+id/tableRow1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="5dip" >

      <RadioButton
                android:id="@+id/radiobutton_friend"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:layout_marginTop="5dp"
                android:button="@drawable/custom_radiobutton"
                android:padding="5dp"
                android:paddingLeft="10dp"
                android:text="Friend"
                android:textSize="15sp" />

            <RadioButton
                android:id="@+id/radiobutton_business"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:layout_marginTop="5dp"
                android:button="@drawable/custom_radiobutton"
                android:padding="5dp"
                android:paddingLeft="10dp"
                android:text="We&apos;ve done Business Together"
                android:textSize="15sp" />
    </TableRow>

<TableRow
        android:id="@+id/tableRow1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="5dip" >
<RadioButton
                android:id="@+id/radiobutton_colleague"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:layout_marginTop="5dp"
                android:button="@drawable/custom_radiobutton"
                android:padding="5dp"
                android:paddingLeft="10dp"
                android:text="Colleague"
                android:textSize="15sp" />

            <RadioButton
                android:id="@+id/radiobutton_other"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:layout_marginTop="5dp"
                android:button="@drawable/custom_radiobutton"
                android:padding="5dp"
                android:paddingLeft="10dp"
                android:text="Other"
                android:textSize="15sp" />
    </TableRow>
</RadioGroup>

</TableLayout>

我在这里使用了表格布局,因此有2行RadioButtons。