フローティング アクション ボタン(FAB)は、ユーザーがアプリでメインとなる操作を実行できるようにする、強調表示されたボタンです。ユーザーが最もよく行う単一の操作を促すもので、通常は画面の右下に固定されています。
FAB を使用できる 3 つのユースケースを以下に示します。
- 新しいアイテムを作成する: メモアプリでは、FAB を使用して新しいメモをすばやく 作成できます。
- 新しい連絡先を追加する: チャットアプリでは、FAB を使用して、 会話にユーザーを追加できるインターフェースを開くことができます。
- 現在地を中央に表示する: 地図インターフェースでは、FAB を使用して、 ユーザーの現在地を地図の中央に表示できます。
マテリアル デザインには、次の 4 種類の FAB があります。
- FAB: 通常サイズのフローティング アクション ボタン。
- Small FAB: 小さめのフローティング アクション ボタン。
- Large FAB: 大きめのフローティング アクション ボタン。
- Extended FAB: アイコン以外の要素も含むフローティング アクション ボタン。
API サーフェス
マテリアル デザインに準拠したフローティング アクション ボタンを作成するために使用できるコンポーザブルはいくつかありますが、パラメータに大きな違いはありません。 注意すべき主なパラメータは次のとおりです。
onClick: ユーザーがボタンを押したときに呼び出される関数。containerColor: ボタンの色。contentColor: アイコンの色。
フローティング アクション ボタン
一般的なフローティング アクション ボタンを作成するには、基本的な
FloatingActionButton コンポーザブルを使用します。次の例は、FAB の基本的な実装を示しています。
@Composable fun Example(onClick: () -> Unit) { FloatingActionButton( onClick = { onClick() }, ) { Icon(Icons.Filled.Add, "Floating action button.") } }
これを実装すると次のようになります。
小さいボタン
小さいフローティング アクション ボタンを作成するには、
SmallFloatingActionButton コンポーザブルを使用します。次の例は、カスタムカラーを追加して作成する方法を示しています。
@Composable fun SmallExample(onClick: () -> Unit) { SmallFloatingActionButton( onClick = { onClick() }, containerColor = MaterialTheme.colorScheme.secondaryContainer, contentColor = MaterialTheme.colorScheme.secondary ) { Icon(Icons.Filled.Add, "Small floating action button.") } }
これを実装すると次のようになります。
大きいボタン
大きいフローティング アクション ボタンを作成するには、
LargeFloatingActionButton コンポーザブルを使用します。このコンポーザブルは、ボタンが大きくなることを除いて、他の例と大きな違いはありません。
以下に、大きい FAB の簡単な実装を示します。
@Composable fun LargeExample(onClick: () -> Unit) { LargeFloatingActionButton( onClick = { onClick() }, shape = CircleShape, ) { Icon(Icons.Filled.Add, "Large floating action button") } }
これを実装すると次のようになります。
拡張ボタン
ExtendedFloatingActionButton コンポーザブルを使用すると、より複雑なフローティング アクション ボタンを作成できます。このコンポーザブルとFloatingActionButtonの主な違いは、専用のiconとtextパラメータがあることです。これにより、コンテンツに合わせて適切にスケーリングされる、より複雑なコンテンツを含むボタンを作成できます。
次のスニペットは、ExtendedFloatingActionButton を実装する方法を示しています。icon と text にはサンプル値が渡されています。
@Composable fun ExtendedExample(onClick: () -> Unit) { ExtendedFloatingActionButton( onClick = { onClick() }, icon = { Icon(Icons.Filled.Edit, "Extended floating action button.") }, text = { Text(text = "Extended FAB") }, ) }
これを実装すると次のようになります。