ラジオボタンを使用すると、ユーザーは選択肢のセットから 1 つの選択肢を選択できます。ラジオボタンは、リストから 1 つのアイテムのみを選択できる場合に使用します。複数のアイテムを選択する必要がある場合は、代わりにスイッチを使用します。
API サーフェス
RadioButton コンポーザブルを使用して、使用可能なオプションを一覧表示します。各 RadioButton オプションとそのラベルを Row コンポーネントでラップして、グループ化します。
RadioButton には、次の主なパラメータが含まれています。
- selected: ラジオボタンが選択されているかどうかを示します。
- onClick: ユーザーがラジオボタンをクリックしたときにアプリが実行するラムダ関数。これが- nullの場合、ユーザーはラジオボタンを直接操作できません。
- enabled: ラジオボタンを有効にするか無効にするかを制御します。無効になっているラジオボタンは操作できません。
- interactionSource: ボタンのインタラクション状態(押されているか、ホバーされているか、フォーカスされているかなど)を監視できます。
基本的なラジオボタンを作成する
次のコード スニペットは、Column 内のラジオボタンのリストをレンダリングします。
@Composable fun RadioButtonSingleSelection(modifier: Modifier = Modifier) { val radioOptions = listOf("Calls", "Missed", "Friends") val (selectedOption, onOptionSelected) = remember { mutableStateOf(radioOptions[0]) } // Note that Modifier.selectableGroup() is essential to ensure correct accessibility behavior Column(modifier.selectableGroup()) { radioOptions.forEach { text -> Row( Modifier .fillMaxWidth() .height(56.dp) .selectable( selected = (text == selectedOption), onClick = { onOptionSelected(text) }, role = Role.RadioButton ) .padding(horizontal = 16.dp), verticalAlignment = Alignment.CenterVertically ) { RadioButton( selected = (text == selectedOption), onClick = null // null recommended for accessibility with screen readers ) Text( text = text, style = MaterialTheme.typography.bodyLarge, modifier = Modifier.padding(start = 16.dp) ) } } } }
コードに関する主なポイント
- radioOptionsはラジオボタンのラベルを表します。
- コンポーズ可能な関数 rememberは、状態変数selectedOptionと、その状態を更新する関数onOptionSelectedを作成します。この状態には、選択されたラジオボタンのオプションが保持されます。- mutableStateOf(radioOptions[0])は、リストの最初のアイテムに状態を初期化します。[Calls] が最初の項目なので、デフォルトで選択されているラジオボタンです。
 
- Modifier.selectableGroup()は、スクリーン リーダーのユーザー補助機能が適切に動作するようにします。この- Column内の要素が選択可能なグループの一部であることをシステムに通知し、スクリーン リーダーの適切なサポートを可能にします。
- Modifier.selectable()を使用すると、- Row全体が選択可能な 1 つのアイテムとして機能します。- selectedは、現在の- Rowが- selectedOption状態に基づいて選択されているかどうかを示します。
- onClickラムダ関数は、- Rowがクリックされたときに- selectedOption状態をクリックされたオプションに更新します。
- role = Role.RadioButtonは、- Rowがラジオボタンとして機能することをユーザー補助サービスに通知します。
 
- RadioButton(...)は- RadioButtonコンポーザブルを作成します。- RadioButtonの- onClick = nullは、アクセシビリティを向上させます。これにより、ラジオボタンがクリック イベントを直接処理することを防ぎ、- Rowの- selectable修飾子が選択状態とユーザー補助の動作を管理できるようになります。
 
結果
![[通話]、[不在着信]、[友だち] というラベルの付いた 3 つのラジオボタンのリスト。[Friends] ラジオボタンが選択されています。](https://developer.android.com/static/develop/ui/compose/images/components/radiobutton2.png?authuser=9&hl=ja) 
  参考情報
- マテリアル デザイン: ボタン
