Как равномерно распределить радиокнопки в 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>