底部导航栏生成(结合navigation管理的fragment来使用)
生成方式:
第一种:创建项目时,主动选择底部导航栏模式
第二种:在已有的项目中new一个
第三中:手动创建
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 菜单设置
导航图片切换设置
导航文字颜色切换设置 app:itemTextColor:用于设置底部导航栏字体颜色
bottom_text_color_selector 颜色切换设置
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 //用于处理底部导航栏图标颜色不正常显示