Как равномерно распределить радиокнопки в Android?

У меня есть три радиокнопки, и я хочу равномерно распределить их по экрану. Когда я использую android:layout_weight="1"кнопки растянуты по всему экрану. Итак, как бы у меня было одинаковое количество пространства между ними, которое также масштабируется на экранах разных размеров?

<RadioGroup 
        android:id="@+id/auton_bar"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:paddingLeft="10dp"
        android:layout_below="@id/clear_fields"
                >
        <RadioButton
            android:id="@+id/auton_radio_1"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content" 
            android:background="@drawable/auton_col"
            android:layout_weight="1"

            />
        <!-- android:layout_marginRight="380dp"  --> 
        <RadioButton
            android:id="@+id/auton_radio_2"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content" 
            android:background="@drawable/auton_col"
            android:layout_weight="1"


            />
        <RadioButton
            android:id="@+id/auton_radio_3"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content" 
            android:background="@drawable/auton_col"
            android:layout_weight="1"
            />

    </RadioGroup>

3 ответа

Решение

Если вы хотите, чтобы они имели одинаковую ширину экрана, вам нужно установить android:layout_width="match_parent" на каждой View, Ваш xml станет:

<RadioGroup
    android:id="@+id/auton_bar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/clear_fields"
    android:orientation="horizontal"
    android:paddingLeft="10dp" >

    <RadioButton
        android:id="@+id/auton_radio_1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:background="@drawable/auton_col" />
    <!-- android:layout_marginRight="380dp" -->

    <RadioButton
        android:id="@+id/auton_radio_2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:background="@drawable/auton_col" />

    <RadioButton
        android:id="@+id/auton_radio_3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:background="@drawable/auton_col" />
</RadioGroup>

Разрабатывать, layout_weight можно использовать двумя способами.

  • Если у вас есть несколько видов в вертикальной линейной компоновке, и вы хотите, чтобы последний занимал все оставшееся пространство, вы можете установить их высоту в wrap_content и дать последнему виду вес 1.
  • Если вы хотите, чтобы все виды разделяли доступное пространство, установите для всех значений ширины / высоты 0dp или же match_parent и дать каждому виду одинаковое значение веса. Они будут делить пространство одинаково.

Чтобы иметь масштабируемый фоновый рисунок, создайте новый XML-файл, drawable/ папка, которая выглядит так

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:gravity="center"
    android:src="@drawable/auton_col" />

Назовите его как угодно (например, auton_col_scale.xml) и укажите его в качестве фона.

Я заметил, что использование весов макета для RadioButton приводило к их выравниванию вне центра, хотя каждый из них определенно занимал 50% экрана (они были выровнены по левому краю). Установка силы тяжести для каждой кнопки RadioButton приводила к центрированию только текста /facepalm

В приведенном ниже XML-коде показано, как выровнять по горизонтали две радиокнопки (могут быть любые виды) и отцентрировать их:

                <RadioGroup
                    android:id="@+id/radiogroup"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal">

                    <Space
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"/>

                    <RadioButton
                        android:id="@+id/radioyes"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/yes"
                        android:checked="false"/>

                    <Space
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"/>

                    <RadioButton
                        android:id="@+id/radiono"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/no"
                        android:checked="false"/>

                    <Space
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"/>

                </RadioGroup>

установите ширину, соответствующую родительскому элементу каждого макета, а затем добавьте вес, как линейный макет.

      <RadioGroup
            android:id="@+id/radio_group"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginStart="@dimen/bigMarginStart"
            android:layout_marginTop="@dimen/smallMarginTop"
            android:layout_marginEnd="@dimen/baseMarginEnd"
            android:orientation="horizontal"
            android:weightSum="3"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent">

            <RadioButton
                android:id="@+id/all_"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="@dimen/smallMarginTop"
                android:layout_weight="1"
                android:background="@drawable/radio_flat_selector"
                android:button="@android:color/transparent"
                android:checked="true"
                android:gravity="center"
                android:paddingLeft="@dimen/bigPaddingStart"
                android:paddingTop="@dimen/smallPaddingTop"
                android:paddingRight="@dimen/bigPaddingStart"
                android:paddingBottom="@dimen/smallPaddingBottom"
                android:text="All" />

            <RadioButton
                android:id="@+id/future_"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginStart="@dimen/smallMarginStart"
                android:layout_marginTop="@dimen/smallMarginTop"
                android:layout_marginEnd="@dimen/smallMarginEnd"
                android:layout_weight="1"
                android:background="@drawable/radio_flat_selector"
                android:button="@android:color/transparent"
                android:gravity="center"
                android:paddingLeft="@dimen/bigPaddingStart"
                android:paddingTop="@dimen/smallPaddingTop"
                android:paddingRight="@dimen/bigPaddingStart"
                android:paddingBottom="@dimen/smallPaddingBottom"
                android:text="Future" />

            <RadioButton
                android:id="@+id/direct_"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="@dimen/smallMarginTop"
                android:layout_weight="1"
                android:background="@drawable/radio_flat_selector"
                android:button="@android:color/transparent"
                android:gravity="center"
                android:paddingLeft="@dimen/bigPaddingStart"
                android:paddingTop="@dimen/smallPaddingTop"
                android:paddingRight="@dimen/bigPaddingStart"
                android:paddingBottom="@dimen/smallPaddingBottom"
                android:text="Direct" />

        </RadioGroup>
Другие вопросы по тегам