フローティング操作ボタン

フローティング アクション ボタン(FAB)は、ユーザーがアプリでメインとなる操作を実行できるようにする、強調表示されたボタンです。ユーザーが最もよく行う単一の操作を促すもので、通常は画面の右下に固定されています。

FAB を使用できる 3 つのユースケースを以下に示します。

  • 新しいアイテムを作成する: メモアプリでは、FAB を使用して新しいメモをすばやく 作成できます。
  • 新しい連絡先を追加する: チャットアプリでは、FAB を使用して、 会話にユーザーを追加できるインターフェースを開くことができます。
  • 現在地を中央に表示する: 地図インターフェースでは、FAB を使用して、 ユーザーの現在地を地図の中央に表示できます。

マテリアル デザインには、次の 4 種類の FAB があります。

  • FAB: 通常サイズのフローティング アクション ボタン。
  • Small FAB: 小さめのフローティング アクション ボタン。
  • Large FAB: 大きめのフローティング アクション ボタン。
  • Extended FAB: アイコン以外の要素も含むフローティング アクション ボタン。
4 つのフローティング アクション ボタン コンポーネントの例。
図 1.4 種類のフローティング アクション ボタン。

API サーフェス

マテリアル デザインに準拠したフローティング アクション ボタンを作成するために使用できるコンポーザブルはいくつかありますが、パラメータに大きな違いはありません。 注意すべき主なパラメータは次のとおりです。

  • onClick: ユーザーがボタンを押したときに呼び出される関数。
  • containerColor: ボタンの色。
  • contentColor: アイコンの色。

フローティング アクション ボタン

一般的なフローティング アクション ボタンを作成するには、基本的な FloatingActionButton コンポーザブルを使用します。次の例は、FAB の基本的な実装を示しています。

@Composable
fun Example(onClick: () -> Unit) {
    FloatingActionButton(
        onClick = { onClick() },
    ) {
        Icon(Icons.Filled.Add, "Floating action button.")
    }
}

これを実装すると次のようになります。

角が丸く、影があり、「追加」アイコンが付いた標準のフローティング アクション ボタン。
図 2.フローティング アクション ボタン。

小さいボタン

小さいフローティング アクション ボタンを作成するには、 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.")
    }
}

これを実装すると次のようになります。

「追加」アイコンを含む SmallFloatingActionButton の実装。
図 3.小さいフローティング アクション ボタン。

大きいボタン

大きいフローティング アクション ボタンを作成するには、 LargeFloatingActionButton コンポーザブルを使用します。このコンポーザブルは、ボタンが大きくなることを除いて、他の例と大きな違いはありません。

以下に、大きい FAB の簡単な実装を示します。

@Composable
fun LargeExample(onClick: () -> Unit) {
    LargeFloatingActionButton(
        onClick = { onClick() },
        shape = CircleShape,
    ) {
        Icon(Icons.Filled.Add, "Large floating action button")
    }
}

これを実装すると次のようになります。

「追加」アイコンを含む LargeFloatingActionButton の実装。
図 4.大きいフローティング アクション ボタン。

拡張ボタン

ExtendedFloatingActionButton コンポーザブルを使用すると、より複雑なフローティング アクション ボタンを作成できます。このコンポーザブルとFloatingActionButtonの主な違いは、専用のicontextパラメータがあることです。これにより、コンテンツに合わせて適切にスケーリングされる、より複雑なコンテンツを含むボタンを作成できます。

次のスニペットは、ExtendedFloatingActionButton を実装する方法を示しています。icontext にはサンプル値が渡されています。

@Composable
fun ExtendedExample(onClick: () -> Unit) {
    ExtendedFloatingActionButton(
        onClick = { onClick() },
        icon = { Icon(Icons.Filled.Edit, "Extended floating action button.") },
        text = { Text(text = "Extended FAB") },
    )
}

これを実装すると次のようになります。

「拡張ボタン」というテキストと編集アイコンを表示する ExtendedFloatingActionButton の実装。
図 5.テキストとアイコンの両方を含むフローティング アクション ボタン。

参考情報