RadioButton & RadioGroup

Posted by muchag | Android |
初回投稿:2011-04-18 (月) 13:34:36 | 最終更新:2011-04-18 (月) 15:55:05

毎度お馴染みの UI である RadioButton

HTML のように name 属性にてグループを構成するのではなくて
RadioGroup クラスにて設定する。

Android Developers:RadioButton & RadioGroup

レイアウト
XML
  1. <RadioGroup
  2.     android:id="@+id/radiogroup"
  3.     android:layout_width="fill_parent"
  4.     android:layout_height="wrap_content">
  5.  
  6.     <RadioButton
  7.         android:id="@+id/radiobuttonA"
  8.         android:text="A"
  9.         android:layout_width="wrap_content"
  10.         android:layout_height="wrap_content" />
  11.  
  12.     <RadioButton
  13.         android:id="@+id/radiobuttonB"
  14.         android:text="B"
  15.         android:layout_width="wrap_content"
  16.         android:layout_height="wrap_content" />
  17.  
  18.     <RadioButton
  19.         android:id="@+id/radiobuttonC"
  20.         android:text="C"
  21.         android:layout_width="wrap_content"
  22.         android:layout_height="wrap_content" />
  23. </RadioGroup>

 

スクリプト
  1. LinearLayout llMain = (LinearLayout) findViewById(R.id.llMain);
  2.  
  3. RadioGroup rg = new RadioGroup(this);
  4. llMain.addView(rg, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) );
  5.  
  6. RadioButton rbA = new RadioButton(this);
  7. rbA.setText("A");
  8. rg.addView(rbA);
  9.  
  10. RadioButton rbB = new RadioButton(this);
  11. rbB.setText("B");
  12. rg.addView(rbB);
  13.  
  14. RadioButton rbC = new RadioButton(this);
  15. rbB.setText("C");
  16. rg.addView(rbC);

8,12,16行目の addView は、4行目の addView とは異なり
RadioGroup 特有のもの。

void | addView (View child, int index, ViewGroup.LayoutParams params)

Android Developers:RadioGroup addView

第1引数:ラジオボタンのインスタンス
第2引数:ラジオボタンのポジション。省略可。記述する場合は 0 から順にしないとエラーになる
第3引数:LayoutParams。省略可

とひとまず動くには動いたけど
1つ目のテキストの位置がずれる
こんな問題を抱える羽目に。
 

注意点

RadioButton は RadioGroup の直下に配置すべし

ラジオボタンをグループ化するのは
ラジオボタンとはもともと択一式の UI なわけで
1つを選択したら、残りのものを OFF にするためである。

グループ化することで、残りがどれかを判断できる、という仕組み。

そこで1つ罠に落ちたのは
RadioButton は RadioGroup の 直下に配置しない
この グループが機能しない ということ。

私がやったのはこんな感じ。

  1. <RadioGroup>
  2.  
  3.     <LinearLayout>
  4.         <RadioButton>
  5.         <TextView>
  6.     </LinearLayout>
  7.  
  8.     <LinearLayout>
  9.         <RadioButton>
  10.         <TextView>
  11.     </LinearLayout>
  12.  
  13.     <LinearLayout>
  14.         <RadioButton>
  15.         <TextView>
  16.     </LinearLayout>
  17. </RadioGroup>

これでグループが機能しなくなった。

Posted by muchag | Android |
初回投稿:2011-04-18 (月) 13:34:36 | 最終更新:2011-04-18 (月) 15:55:05

コメントはまだありません »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment