Jetpack Compose Glimmer では、ToggleButton は、インタラクティブなコンポーネント
で、チェックされた状態に基づいて外観が変化します。切り替えボタンは、ディスプレイ メガネ向けに最適化されており、形状と色を視覚的にスムーズに切り替えることができます。この切り替えは、アクションまたは設定が有効になっていることを示します。
切り替えボタンを使用して、オンとオフを切り替えられるアクションを表示します。アイコンのみの切り替えとは異なり、切り替えボタンは主にテキスト コンテンツを表示しますが、追加のコンテキスト用のオプションのアイコン スロットもサポートしています。
他のユースケースでは、標準ボタンとアイコンボタンもあります。
解剖学
切り替えボタンは、状態を切り替えるコンテナと、オプションのアイコンが付いたラベルで構成されています。
| Part | 説明 |
|---|---|
コンテナ |
円形(未チェック)と丸みを帯びた長方形(チェック済み)の間でアニメーション化します。 |
ラベル |
通常は |
アイコン(省略可) |
状態によって異なる先頭または末尾のスロット。 |
サイズ
標準ボタンと同様に、切り替えボタンは 2 つのサイズ バリアントをサポートしています。
| サイズ | 最小の高さ | デフォルトの利用ポリシー |
|---|---|---|
メディア |
48.dp |
デフォルトのインタラクティブ サイズ。 |
大 |
72.dp |
プライマリまたは強調表示の切り替え。 |
切り替えボタンのデフォルト
デフォルトでは、切り替えボタンは ToggleButtonDefaults.animateShape を使用します。これにより、次の状態がスムーズに切り替わります。
- 未チェック:
GlimmerTheme.shapes.large(通常はCircleShape)。 - チェック済み:
ToggleButtonDefaults.CheckedShape(RoundedCornerShapeの角を持つ20.dp)。
ToggleButtonColors クラスは、次の状態の色分解を管理します。
- 未チェック: デフォルトは
GlimmerTheme.colors.surface。 - チェック済み: デフォルトは
GlimmerTheme.colors.surface。
アニメーション
切り替えボタンでは、アニメーションに次のデフォルトが使用されます。
animateShape:スプリング アニメーション仕様(stiffness = 600f)を使用して角のサイズを補間するShapeを提供します。colors: 両方の状態の背景色とコンテンツの色をカスタマイズするファクトリ関数。CheckedShape: チェックされた状態に使用される静的なRoundedCornerShape(20.dp)。contentPadding:ButtonDefaults.contentPaddingから継承します。
例: 切り替えボタン
次のコードは、基本的な切り替えボタンを作成します。
@Composable fun ToggleButtonSample() { var checked by remember { mutableStateOf(false) } val text = if (checked) "Toggle on" else "Toggle off" ToggleButton( checked = checked, onCheckedChange = { checked = it } ) { Text(text) } }
例: 先頭にアイコンが付いた切り替えボタン
次のコードは、先頭にアイコンが付いた切り替えボタンを作成します。
@Composable fun ToggleButtonWithLeadingIconSample() { var checked by remember { mutableStateOf(false) } ToggleButton( checked = checked, leadingIcon = { Icon( if (checked) FavoriteIcon else OutlinedFavoriteIcon, contentDescription = "Toggle favorite" ) }, onCheckedChange = { checked = it } ) { Text(if (checked) "On" else "Off") } }