EGO-LOG

40代2児の父。主にプログラム学習と開発、仮想通貨、メタバース、たまに関係ないことを綴る。

(2022/2/19)Android Studio ドロワーと下部ナビゲーションの組み合わせ

ナビゲーションドロワーと下部ナビゲーションの組み合わせを模索。

 

ドロワーのサンプルプログラムのactivity_main.xmlは以下の通り。

f:id:tenomeuonome:20220220040208p:plain

 

NavigationViewタグは、ドロワーのメインである、左からウニョっと出てくるやつ。

 

後ろの通常画面はinclude句のapp_bar_mainで定義している。

f:id:tenomeuonome:20220220041001p:plain

 

画面の定義なのかと思いきや、画面上部のツールバーとその下のメイン画面のセットの定義っぽい。

メイン画面は

    <include layout="@layout/content_main" />

となっているので、さらにそちらを参照。

f:id:tenomeuonome:20220220041648p:plain

右下にメールボタンがあるけど、これは不要で、ここに下部ナビゲーションを表示したい。

 

一方、下部ナビゲーションのサンプルプログラムのactivity_main.xmlは以下のとおり。

f:id:tenomeuonome:20220220041213p:plain

ConstraintLayoutの中にBottomNavigationViewが記述されている。

 

content_main.xmlではConstraintLayoutの中にfragmentが記述されているので、

ここにBottomNavigationViewを追記してやればいけるのかも?

 

やってみる。

f:id:tenomeuonome:20220220042111p:plain

↑こーして。menuにエラーがあるので定義をコピー

 

bottom_nav_menu.xml

f:id:tenomeuonome:20220220043038p:plain

必要なリソースもコピーして。

 

ビルドは通ったので表示だけでも行けるか?と起動してみたらやっぱりエラー。

bind関係の記述何も変えてないし、当然か。

 

ググってたら英語サイト

Android Bottom Navigation and Navigation Drawer - Part 1

目的はばっちり合っている気がする!

 

サイトを上から順に眺めていると・・content_main.xmlのfragmentとBottomNavigationViewの記述順が逆になっている。

これぐらいで差は出ないだろうけど念のため・・と逆にしてみたら、起動した。

 

f:id:tenomeuonome:20220220063320p:plain

 

次にMainActivityのonCreate関数に以下を追記。

val navBottomView: BottomNavigationView = findViewById(R.id.bottom_navigation_view)
navBottomView.setupWithNavController(navController)

 

起動はするし、ドロワーからのメニュー選択は反応するけど下部ナビゲーションのメニューは反応しない状態。

もう一息だとは思うのだが・・

 

続く