ボトムバーの設定
今回は、『アプリで共通のボトムバーに、現在表示されているコンポーザブル(画面)の名称を表示させる』ことを目標にしてみましょう。
というわけで、ナビゲーションの制御とは直接関係しませんが、まず初めにボトムバーの設置から行います。
以前の記事で紹介したナビゲーションのサンプルを今回も使用しますが、ナビゲーションの実装については既に紹介したので、その部分は丸っと省きます。
以前の記事を読んでいない方も当然いらっしゃるでしょうが、Jetpack Composeにおけるナビゲーションの基本を理解できていれば、以前の記事を読んでコードの詳細を把握しておく必要はありません。
サンプルには、ホーム(Home)・Screen A・Screen Bの3つのコンポーザブル(画面)があり、各コンポーザブルに設置されたボタンをタップすることで画面遷移ができるようになっている…という構造を知っておいてもらえればそれで十分です。
ただ一点だけ注意が必要になるかもしれない点は、各スクリーンの名称は下のように enum class
で管理されているという点です。(ナビゲーションの名称を管理する上で、文字列を直接渡していないということです)
Kotlin
enum class Screens {
HOME,
SCREEN_A,
SCREEN_B
}
さて、ボトムナビゲーションバーの設定ですが、今回はテキストを表示させたいだけなのでアイコンやボタンなどは配置せず、シンプルにまとめます。
ボトムナビゲーションバーを設置するには、Scaffold
の bottomBar
パラメータにコンポーザブルを指定します。
今回は以下のように指定してみましょう。
Kotlin
Scaffold(bottomBar = {
Text(
text = "Current screen is ...",
fontSize = 24.sp,
textAlign = TextAlign.Center,
modifier = Modifier
.fillMaxWidth()
.padding(vertical = 16.dp)
)
}) {
// Create NavHost
NavHost(
modifier = Modifier.padding(it),
// The rest is omitted
}
今の段階ではまだ現在表示されている画面(Current Screen)の情報を得ることができないので、テキストはとりあえず『Current screen is …』と指定しています。
この時点における表示結果(HOME画面)は次のようになります。
これで、表示されている画面の名称をボトムバーに表示させる準備が整いました!
なお、Scaffold(スキャフォールド)は『足場』といった意味を持つ英単語で、トップバーやボトムバー、スナックバーなどのマテリアルデザイン・コンポーネントを設置するための土台的な役割を果たすものです。
Scaffoldに含まれるコンポーザブルでは、トップバーやボトムバーを表示するスペースを適切に確保できるようにするため、 PaddingValues
を受け取って設定する必要があります。
- POINT!
- ・ボトムバーを設置するには、Scaffoldを利用しよう!
- ・Scaffold の bottomBar パラメータに、必要なコンポーザブルを渡そう!
- ・Scaffold = マテリアルデザイン・コンポーネントを利用するための土台(足場)!