ラジオボタンを使用すると、ユーザーは選択肢のセットから 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全体を単一の選択可能なアイテムとして機能させます。selectedは、現在のRowがselectedOption状態に基づいて選択されているかどうかを示します。onClickラムダ関数は、RowがクリックされたときにselectedOption状態をクリックされたオプションに更新します。role = Role.RadioButtonは、Rowがラジオボタンとして機能することをユーザー補助サービスに通知します。
RadioButton(...)はRadioButtonコンポーザブルを作成します。RadioButtonのonClick = nullは、アクセシビリティを向上させます。これにより、ラジオボタンがクリック イベントを直接処理することを防ぎ、Rowのselectable修飾子が選択状態とユーザー補助の動作を管理できるようになります。
結果
参考情報
- マテリアル デザイン: ボタン