Управление компоновкой внутри горизонтально-ориентированной радиогруппы
Я использую TableLayout с TableRows в качестве основного действия.
Внутри TableLayout находится группа радиостанций, содержащая 2 радио кнопки внутри действия (радиогруппа находится внутри строки таблицы). Я хочу иметь возможность выровнять правый правый переключатель на правом краю экрана, так что "промежуток" находится между левой кнопкой и правой кнопкой (вместо правой кнопки). то есть.
Итак, вместо того, чтобы
| (x) (x) разрыв |
Я буду иметь
| (x) gap (x) |
где (x) - радио-кнопки и | являются краями экрана
Я могу использовать гравитацию (center_horizontal), чтобы поместить обе кнопки в середине (т.е. разрыв пробела (x) (x) |), однако я, похоже, не могу разбить их так, как я хочу, как сказано ранее
Ответы
Ответ 1
Все, что вам нужно, чтобы равномерно разместить произвольное количество кнопок по горизонтали по экрану:
- Радиогруппа должна иметь
android:orientation="horizontal"
&
android:layout_width="fill_parent"
- Каждый переключатель должен иметь
android:layout_weight="1"
, кроме
самая правая кнопка (чтобы сделать это
выстроить линию на правом краю
экран)!
![Landscape screenshot]()
Мне потребовались часы, чтобы понять.
Вот пример кода с бонусом двух текстовых меток и правого и левого краев экрана для приложения для опроса.
<RadioGroup
android:id="@+id/radio_group"
android:orientation="horizontal"
android:layout_below="@id/question"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:visibility="gone"
>
<RadioButton
android:id="@+id/strong_disagree_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="1"
/>
<RadioButton
android:id="@+id/disagree_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/disagree"
/>
<RadioButton
android:id="@+id/neutral_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/neutral"
/>
<RadioButton
android:id="@+id/agree_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/agree"
/>
<RadioButton
android:id="@+id/strong_agree_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="5"
/>
</RadioGroup>
<TextView
android:id="@+id/disagree_label"
android:text="@string/strongly_disagree_txt"
android:layout_below="@id/radio_group"
style="@style/TextAppearance"
android:visibility="gone"
/>
<TextView
android:id="@+id/agree_label"
android:text="@string/strongly_agree_txt"
android:layout_below="@id/radio_group"
android:layout_alignParentRight="true"
style="@style/TextAppearance"
android:layout_width="wrap_content"
android:visibility="gone"
/>
Ответ 2
Нашел мое решение. Сочетание весов и силы тяжести и удаление полей. Группа радио может иметь layout_width = "fill_parent". Каждый переключатель должен иметь layout_weight = "1", но layout_width для каждого излучателя необходимо по-прежнему указывать, чтобы переопределить значение по умолчанию "37", которое, как я полагаю, является шириной изображения переключателя по умолчанию.
<RadioGroup android:id="@+id/overall"
android:layout_width="fill_parent" android:layout_height="80dp"
android:gravity="center"
android:orientation="horizontal">
Первая кнопка должна иметь:
android:layout_weight="1"
android:layout_gravity="center|left"
Последняя кнопка должна иметь:
android:layout_gravity="center|right"
Примечание: все кнопки имеют layout_gravioty, но нет настройки layout_weight для самой правой кнопки!
Ответ 3
Вы когда-нибудь находили решение? Мое промежуточное решение могло бы помочь, но это не полная картина для меня. Я смог сделать это, установив определенную ширину, но это не позволяет изменять размер изображения в соответствии с шириной экрана:
<RelativeLayout
android:id="@+id/overall_layout"
android:layout_width="290dp" android:layout_height="wrap_content">
<RadioGroup android:id="@+id/overall"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:orientation="horizontal">
<RadioButton android:id="@+id/overall_1" android:tag="1"
android:button="@drawable/radio_1"
android:layout_width="50dp"
android:layout_marginRight="10dp"
android:layout_height="wrap_content"></RadioButton>
<RadioButton android:id="@+id/overall_2" android:tag="2"
android:button="@drawable/radio_2"
android:layout_width="50dp"
android:layout_marginRight="10dp"
android:layout_height="wrap_content"></RadioButton>
<RadioButton android:id="@+id/overall_3" android:tag="3"
android:button="@drawable/radio_3"
android:layout_width="50dp"
android:layout_marginRight="10dp"
android:layout_height="wrap_content"></RadioButton>
<RadioButton android:id="@+id/overall_4" android:tag="4"
android:button="@drawable/radio_4"
android:layout_width="50dp"
android:layout_marginRight="10dp"
android:layout_height="wrap_content"></RadioButton>
<RadioButton android:id="@+id/overall_5" android:tag="5"
android:button="@drawable/radio_5"
android:layout_width="50dp"
android:layout_height="wrap_content"></RadioButton>
</RadioGroup>
<TextView android:text="left" android:id="@+id/left"
android:layout_below="@id/overall"
android:layout_alignParentLeft="true"
android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
<TextView android:text="right" android:id="@+id/right"
android:layout_below="@id/overall"
android:layout_alignParentRight="true"
android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
</RelativeLayout>
Обратите внимание, что на последней кнопке нет поля.
Я пытаюсь иметь 5 пользовательских кнопок в группе радио, с 1-м левым и последним право-оправданными. Кнопки шириной ровно 50 пикселей, и я не хочу, чтобы текст, связанный с кнопками, был индивидуальным. В приведенном ниже тексте 2 слева и справа указаны относительные макеты. Использование "layout_gravity" не имеет эффекта, а "layout_weight" добавляет отступ справа от каждой кнопки, что приводит к тому, что самая правая кнопка больше не оправдывается.
Много вытягивания волос на этом.
Ответ 4
Если я правильно понимаю вопрос, вы также можете попробовать следующий код внутри RadioGroup:
<ToggleButton
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<View
android:id="@+id/view1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
<ToggleButton
android:layout_width="wrap_content"
android:layout_height="wrap_content" />