iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 14
1
自我挑戰組

Kotlin Everyday:新手寫程式踩的坑系列 第 14

Day 14 ─用 Kotlin Fragment 做底部導覽欄 BottomNavigation (1)

  • 分享至 

  • xImage
  •  

APP 會常常使用到底部導覽欄位來替內容分類,在 Android Studio 裡面可以直接在建立專案時選擇 Bottom Navigation Activity 來做(如下圖)

今天練習比較簡短,主要講解怎麼不透過建立新Activity方式,嘗試自定義 Bottom Navigation 、讓 Layout 顯示出來,而每個按鈕要連結的 Fragment 頁面則是之後會實作。

使用:Menu、layout設定


底部導覽欄,講白了就是把原本放在上面的 Menu 移到下面,佔據底下的一層空間,Menu作法在前幾天練習也有運用到,可以去:

怎麼建立 Navigation Button

  1. 在 res/menu 建立 Menu Resource File,設計好三個 Menu Item,要注意:做底部導覽列的時候最好不要超過五個導覽按鈕,這樣顯示效果會變很差。

  2. 接著到activity_main.xml,先放一個 frameLayout,長寬設定 match_parent 佔滿四邊,之後的 Fragment 範圍就可以塞到整個頁面

  3. 接著加入 BottomNavigationView 底部導覽畫面元件,注意不要放成側邊欄(NavigationView)喔

  4. 為 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 不一樣,花比較多時間了解用法:

  1. 監聽 BottomNavigationView 點擊事件,要呼叫 setOnNavigationItemSelectedListener() 這個方法

  2. 要記得給 BottomNavigationView 命名,不然沒有實例化就無法取得方法QQ 這裡踩了個坑XD

  3. 透過 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 ->{
      }
   }
  1. listener做完之後,把它指給 setOnNavigationItemSelectedListener() 方法,navigation 為 BottomNavigationView 的id
navigation.setOnNavigationItemSelectedListener (listener)

這樣就完成底部導覽列的點擊設定,之後連結Fragment頁面就可以囉~


上一篇
Day 13 ─用Kotlin 做貓咪圖片滑頁 (下) ViewPager、getIdentifie
下一篇
Day 15 ─用 Kotlin Fragment 做底部導覽欄 (2)
系列文
Kotlin Everyday:新手寫程式踩的坑30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言