Подтвердить что ты не робот

Управление компоновкой внутри горизонтально-ориентированной радиогруппы

Я использую TableLayout с TableRows в качестве основного действия.

Внутри TableLayout находится группа радиостанций, содержащая 2 радио кнопки внутри действия (радиогруппа находится внутри строки таблицы). Я хочу иметь возможность выровнять правый правый переключатель на правом краю экрана, так что "промежуток" находится между левой кнопкой и правой кнопкой (вместо правой кнопки). то есть.

Итак, вместо того, чтобы | (x) (x) разрыв | Я буду иметь | (x) gap (x) |

где (x) - радио-кнопки и | являются краями экрана

Я могу использовать гравитацию (center_horizontal), чтобы поместить обе кнопки в середине (т.е. разрыв пробела (x) (x) |), однако я, похоже, не могу разбить их так, как я хочу, как сказано ранее

4b9b3361

Ответ 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" />