Bottomnavigationview使用笔记

1,199 阅读1分钟

底部导航栏生成(结合navigation管理的fragment来使用)

生成方式:

第一种:创建项目时,主动选择底部导航栏模式

图片.png

第二种:在已有的项目中new一个

图片.png

第三中:手动创建

xml布局:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingTop="?attr/actionBarSize">

    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/nav_view"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="0dp"
        android:layout_marginEnd="0dp"
        android:background="?android:attr/windowBackground"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:labelVisibilityMode="labeled"
        app:itemTextColor="@drawable/bottom_text_color_selector"
        app:menu="@menu/bottom_nav_menu" />

    <fragment
        android:id="@+id/nav_host_fragment_activity_main"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:defaultNavHost="true"
        app:layout_constraintBottom_toTopOf="@id/nav_view"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:navGraph="@navigation/mobile_navigation" />

</androidx.constraintlayout.widget.ConstraintLayout>

app:menu:菜单定义

bottom_nav_menu 菜单设置 图片.png

导航图片切换设置

图片.png

导航文字颜色切换设置 app:itemTextColor:用于设置底部导航栏字体颜色

bottom_text_color_selector 颜色切换设置

图片.png

MainActivity中设置

class MainActivity : AppCompatActivity() {

    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)
        val navView: BottomNavigationView = binding.navView
        val navController = findNavController(R.id.nav_host_fragment_activity_main)
        val appBarConfiguration = AppBarConfiguration(
            setOf(
                R.id.navigation_home, R.id.navigation_dashboard, R.id.navigation_notifications
            )
        )
        setupActionBarWithNavController(navController, appBarConfiguration)
        
        navView.setupWithNavController(navController)
        navView.itemIconTintList = null
       navView.setOnNavigationItemSelectedListener {
           when(it.itemId){
               R.id.navigation_home -> {
                   Log.e("TAG第一个页面", "onCreate: " )
                   true
               }
               R.id.navigation_dashboard -> {
                   Log.e("第二个页面", "onCreate: " )
                   true
               }
               R.id.navigation_notifications -> {
                   Log.e("第三个页面", "onCreate: " )
                   true
               }
               else -> false
           }
       }
    }


}

navView.itemIconTintList = null //用于处理底部导航栏图标颜色不正常显示