ボタンは、ユーザーが定義されたアクションをトリガーできるようにする基本的なコンポーネントです。ボタンには 5 つのタイプがあります。次の表に、5 種類のボタンの外観と、それぞれの使用場所を示します。
| タイプ | デザイン | 目的 |
|---|---|---|
| 塗りつぶし | 無地の背景にコントラストのあるテキスト。 | 高強調ボタン。これらは、アプリケーションのメイン アクション(「送信」や「保存」など)に使用されます。シャドウ効果により、ボタンの重要性が強調されます。 |
| 塗りつぶし(色調) | 背景色はサーフェスに合わせて変化します。 | メイン アクションや重要なアクションにも使用されます。塗りつぶしトーンボタンは、ビジュアル ウェイトが増し、「カートに追加」や「ログイン」などの機能に適しています。 |
| 高い | 影を付けることで目立たせます。 | トーンボタンと同様の目的で使用されます。標高を上げると、ボタンがさらに目立つようになります。 |
| 枠線 | 枠線があり、塗りつぶしはありません。 | 中強調ボタン。重要ではあるがプライマリではないアクションが含まれます。他のボタンと組み合わせて、「キャンセル」や「戻る」などの代替の二次的なアクションを示すのに適しています。 |
| テキスト | 背景や枠線のないテキストを表示します。 | 強調度の低いボタン。ナビゲーション リンクなどの重要度の低いアクションや、「詳細」や「詳細を表示」などの二次的な機能に最適です。 |
この画像は、マテリアル デザインの 5 種類のボタンを示しています。
API サーフェス
onClick- ユーザーがボタンを押したときにシステムが呼び出す関数。
enabledfalseの場合、このパラメータにより、ボタンが使用不可で無効な状態になります。colors- ボタンで使用される色を決定する
ButtonColorsのインスタンス。 contentPadding- ボタン内のパディング。
塗りつぶしボタン
塗りつぶしボタン コンポーネントは、基本的な Button コンポーザブルを使用します。デフォルトでは、単色で塗りつぶされます。次のスニペットは、コンポーネントの実装方法を示しています。
@Composable fun FilledButtonExample(onClick: () -> Unit) { Button(onClick = { onClick() }) { Text("Filled") } }
これを実装すると次のようになります。
塗りつぶしトーンボタン
塗りつぶしトーンボタン コンポーネントは、FilledTonalButton コンポーザブルを使用します。デフォルトでは、色調の色で塗りつぶされます。
次のスニペットは、このコンポーネントの実装方法を示しています。
@Composable fun FilledTonalButtonExample(onClick: () -> Unit) { FilledTonalButton(onClick = { onClick() }) { Text("Tonal") } }
これを実装すると次のようになります。
アウトライン ボタン
アウトライン ボタン コンポーネントは、OutlinedButton コンポーザブルを使用します。デフォルトでは、アウトライン付きで表示されます。
次のスニペットは、コンポーネントの実装方法を示しています。
@Composable fun OutlinedButtonExample(onClick: () -> Unit) { OutlinedButton(onClick = { onClick() }) { Text("Outlined") } }
これを実装すると次のようになります。
Elevated ボタン
エレベーテッド ボタン コンポーネントは、ElevatedButton コンポーザブルを使用します。デフォルトでは、標高効果を表すシャドウがあります。影付きの塗りつぶしボタンです。
次のスニペットは、コンポーネントの実装方法を示しています。
@Composable fun ElevatedButtonExample(onClick: () -> Unit) { ElevatedButton(onClick = { onClick() }) { Text("Elevated") } }
これを実装すると次のようになります。
テキストボタン
テキストボタン コンポーネントは、TextButton コンポーザブルを使用します。押されるまではテキストのみが表示されます。デフォルトでは、塗りつぶしや輪郭はありません。
次のスニペットは、コンポーネントの実装方法を示しています。
@Composable fun TextButtonExample(onClick: () -> Unit) { TextButton( onClick = { onClick() } ) { Text("Text Button") } }
これを実装すると次のようになります。