我想以特定的方式放置RadioButton,而不是水平或垂直

时间:2018-03-26 12:27:16

标签: android android-layout

所需输出enter image description here

我想实现这个布局,我使用下面的代码使布局完美。但RadioGroup不起作用,因此,我可以一次选择所有RadioButtons。

<RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/option_radio_layout">
            <RadioGroup
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:id="@+id/option_radio_group">
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:orientation="vertical">
                    <RadioButton
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="15sp"
                        android:id="@+id/opt1RB"
                        android:text="@string/option_1"/>
                    <RadioButton
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="15sp"
                        android:id="@+id/opt2RB"
                        android:text="@string/option_2"/>

                </LinearLayout>
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:orientation="vertical">
                    <RadioButton
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="15sp"
                        android:id="@+id/opt3RB"
                        android:text="@string/option_3"/>
                    <RadioButton
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="15sp"
                        android:id="@+id/opt4RB"
                        android:text="@string/option_4"/>

                </LinearLayout>
            </RadioGroup>

        </RelativeLayout>

这里的错误是RadioGroud中的线性布局,如果我删除它们布局将只有垂直单选按钮或水平单选按钮,但我希​​望有2x2矩阵,就像看同一个RadioGroup下的RadioButton一样。 谢谢

1 个答案:

答案 0 :(得分:0)

试试这个

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

    <RelativeLayout
        android:id="@+id/option_radio_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <RadioGroup
            android:id="@+id/option_radio_group"
            android:layout_width="match_parent"

            android:layout_height="wrap_content"
            android:orientation="horizontal">

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

                <RadioButton
                    android:id="@+id/opt1RB"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Option_1"
                    android:textSize="15sp" />

                <RadioButton
                    android:id="@+id/opt2RB"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="option_2"
                    android:textSize="15sp" />

            </LinearLayout>

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

                <RadioButton
                    android:id="@+id/opt3RB"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="option_3"
                    android:textSize="15sp" />

                <RadioButton
                    android:id="@+id/opt4RB"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="/option_4"
                    android:textSize="15sp" />

            </LinearLayout>
        </RadioGroup>

    </RelativeLayout>
</LinearLayout>

<强>活性

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.RadioButton;


public class MainActivity extends AppCompatActivity {

    RadioButton opt1RB, opt2RB, opt3RB, opt4RB;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        opt1RB = (RadioButton) findViewById(R.id.opt1RB);
        opt2RB = (RadioButton) findViewById(R.id.opt2RB);
        opt3RB = (RadioButton) findViewById(R.id.opt3RB);
        opt4RB = (RadioButton) findViewById(R.id.opt4RB);

        opt1RB.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                opt2RB.setChecked(false);
                opt3RB.setChecked(false);
                opt4RB.setChecked(false);

            }
        });

        opt2RB.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                opt1RB.setChecked(false);
                opt3RB.setChecked(false);
                opt4RB.setChecked(false);

            }
        });

        opt3RB.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                opt1RB.setChecked(false);
                opt2RB.setChecked(false);
                opt4RB.setChecked(false);

            }
        });

        opt4RB.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                opt1RB.setChecked(false);
                opt2RB.setChecked(false);
                opt3RB.setChecked(false);

            }
        });





    }


}