APP 會常常使用到底部導覽欄位來替內容分類,在 Android Studio 裡面可以直接在建立專案時選擇 Bottom Navigation Activity 來做(如下圖)
今天練習比較簡短,主要講解怎麼不透過建立新Activity方式,嘗試自定義 Bottom Navigation 、讓 Layout 顯示出來,而每個按鈕要連結的 Fragment 頁面則是之後會實作。
使用:Menu、layout設定
底部導覽欄,講白了就是把原本放在上面的 Menu 移到下面,佔據底下的一層空間,Menu作法在前幾天練習也有運用到,可以去:
怎麼建立 Navigation Button
在 res/menu 建立 Menu Resource File,設計好三個 Menu Item,要注意:做底部導覽列的時候最好不要超過五個導覽按鈕,這樣顯示效果會變很差。
接著到activity_main.xml,先放一個 frameLayout
,長寬設定 match_parent
佔滿四邊,之後的 Fragment 範圍就可以塞到整個頁面
接著加入 BottomNavigationView
底部導覽畫面元件,注意不要放成側邊欄(NavigationView)喔
為 BottomNavigationView 增加性質--- app:menu="@menu/菜單畫面id(xml)"
<com.google.android.material.bottomnavigation.BottomNavigationView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:menu="@menu/bottom_navigation" //最重要就是這行!
android:id="@+id/navigation"/>
如何讓 Navigation Button 可被點擊
如何建立 Navigation Button 的點擊事件,因為和之前做 Menu 不一樣,花比較多時間了解用法:
監聽 BottomNavigationView 點擊事件,要呼叫 setOnNavigationItemSelectedListener() 這個方法
要記得給 BottomNavigationView 命名,不然沒有實例化就無法取得方法QQ 這裡踩了個坑XD
透過 interface 自訂一個 listener 監聽器
private var listener = object : BottomNavigationView.OnNavigationItemSelectedListener {
override fun onNavigationItemSelected(item: MenuItem): Boolean {
when(item.itemId){
R.id.item1 ->{
} //之後按鈕會連結fragment
R.id.item2 ->{
}
R.id.item3 ->{
}
}
navigation.setOnNavigationItemSelectedListener (listener)
這樣就完成底部導覽列的點擊設定,之後連結Fragment頁面就可以囉~