Android: Как создать эффект "RadioGroup"? - PullRequest
0 голосов
/ 07 августа 2010

Я пытаюсь создать макет Android, который бы выглядел следующим образом:

Entity1
option1 for Entity1
option2
...
optionN
Entity2
option1 for Entity2
...
optionN
Entity3

...

При условии, что для каждого объекта допускается один и только один вариант.

И я решил использовать радиокнопку с намерением использовать RadioGroup для обеспечения этого. Для достижения вышеизложенного я разработал следующее:

<table layout>
    <TextView, content = "Entity1"/>
    <TextView, content = "option1 for Entity1"/> <RadioButton/>
    <TextView, content = "option2"> <RadioButton/>
   ...
</table layout>

И псевдокод будет:

 RadioGroup raGroup = createEmptyRaGroup()
    ...
    row = new TableRow(); 
    row.add(TextView-entity1);  
    row.add(TextView-op1ForEntity1); 
    RadioButtton raBtn = createRadioButton(); 
    raGroup.addView(raBtn); 
    row.addView(raBtn);  
    ...

И проблема, с которой я сталкиваюсь, заключается в том, что я не могу сгруппировать переключатели в одной группе RadioGroup, чтобы была выбрана только одна опция. Во время выполнения Android жалуется, что переключатель должен быть прямым потомком строки. Если я сначала добавлю переключатель в строку, то сначала добавление переключателя в группу переключателей вызовет аналогичную ошибку во время выполнения.

Может кто-нибудь посоветовать мне, как добиться эффекта RadioGroup, используя вышеуказанный дизайн или иным образом?

Спасибо, ребята.

1 Ответ

2 голосов
/ 07 августа 2010

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

<RadioGroup
    android:id="@+id/RadioGroup01"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

<RadioButton 
    android:text="Choice 1"
    android:id="@+id/RadioButton01"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

<RadioButton
    android:text="Choice 2"
    android:id="@+id/RadioButton02" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"/>
</RadioGroup>
...