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

17

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

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

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

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

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

задан deteego 29.12.2010 в 05:08
источник

4 ответа

32

Все, что вам нужно, чтобы равномерно разместить произвольное количество кнопок по горизонтали по экрану:

  1. Радиогруппа должна иметь android:orientation="horizontal" & amp; %код%
  2. Каждый переключатель должен иметь android:layout_width="fill_parent" , кроме самая правая кнопка (чтобы сделать это выстроить линию на правом краю экран)!

Мне потребовались часы, чтобы понять.

Вот пример кода с бонусом двух текстовых меток и правого и левого краев экрана для приложения для опроса.

<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"
    />
    
ответ дан Lucy 30.04.2011 в 15:51
  • Я пробовал это, и это не то же самое с скриншотом, который вы приложили. –  KarenAnne 06.06.2013 в 04:50
  • Спасибо за это .. :) –  KarenAnne 06.06.2013 в 07:00
  • Большое вам спасибо за это, я вытаскиваю свои волосы! –  Garbit 25.03.2014 в 10:59
  • Кроме того, я пробовал, ничего не изменилось :( –  elfekz 27.09.2016 в 15:51
9

Нашел мое решение. Сочетание весов и силы тяжести и удаление полей. Группа радио может иметь 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 для самой правой кнопки!

    
ответ дан capn 20.01.2011 в 00:00
  • Я использовал это, но он не работает для моего кода, первая кнопка охватывает всю строку –  elfekz 27.09.2016 в 16:00
0

Вы когда-нибудь находили решение? Мое промежуточное решение может помочь, но это не полная картина для меня. Я смог сделать это, установив определенную ширину, но это не позволяет изменять размер изображения в соответствии с шириной экрана:

    <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» добавляет отступ справа от каждой кнопки, что приводит к тому, что самая правая кнопка больше не оправдывается.

Много вытягивания волос на этом.

    
ответ дан capn 19.01.2011 в 21:23
0

Если я правильно понимаю вопрос, вы также можете попробовать следующий код внутри 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" />
    
ответ дан alcsan 29.01.2013 в 10:32