Как расположить представления так, чтобы можно было использовать радиогруппу? - PullRequest
1 голос
/ 10 марта 2011

Сейчас у меня есть этот макет (горизонтальные относительные макеты внутри вертикального линейного макета), но мне нужны радиокнопки вместо флажков (пользователь должен иметь возможность выбрать только один вариант).

enter image description here

<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
         >
<RelativeLayout
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:layout_marginTop="10dip"
    android:layout_marginLeft="5dip"
    android:layout_marginRight="5dip"
    android:orientation="horizontal">

    <ImageView
        android:src="@drawable/flag_en"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:adjustViewBounds="true"
        android:scaleType="fitCenter"
        android:layout_alignParentLeft="true" />

<TextView
        android:text="English"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_marginLeft="10dip"
        android:textStyle="bold"
        android:textSize="20dip"            
         />

         <CheckBox android:id="@+id/checkbox4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"    
        android:layout_alignParentRight="true"
    />

   </RelativeLayout>    

   <RelativeLayout
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:layout_marginTop="10dip"
    android:layout_marginLeft="5dip"
    android:layout_marginRight="5dip"
    android:orientation="horizontal">

    <ImageView
        android:src="@drawable/flag_dk"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:adjustViewBounds="true"
        android:scaleType="fitCenter"
        android:layout_alignParentLeft="true" />

<TextView
        android:text="Dansk"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:textStyle="bold"
        android:textSize="20dip"        
         />

         <CheckBox android:id="@+id/checkbox5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"    
        android:layout_alignParentRight="true"
    />

        </RelativeLayout>
         <Button
          android:id="@+id/ang_btn"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:text="ang"
         />
        </LinearLayout>

Проблема в том, что RadioGroup должна быть размещена внутри линейного макета (не относительного), поэтому я не могу использовать макет выше.

Как я могу добиться того же расположения (несколько строк, 3 столбца, радиокнопки в третьем столбце), а также использовать радиогруппу с радиокнопками?

РЕДАКТИРОВАТЬ: я пробовал решение Робби Понд (ниже) ия получаю это: enter image description here

Я мог бы использовать это, если бы я мог поместить некоторое пространство между радиопереключателем и его drawableLeft.Мне удалось получить некоторое пространство между drawableLeft и текстом с помощью android: drawablePadding = "10dip" (не видно на моем последнем скриншоте).

1 Ответ

3 голосов
/ 10 марта 2011

Используйте радиогруппу и радиокнопку и используйте android: drawableLeft на RadioButton для изображений.

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <RadioGroup ...>
        <RadioButton ... android:drawableLeft="@drawable/flag_en" android:text="English" />
    </RadioGroup>
</LinearLayout>
...