Я хочу перемещаться между действиями, окрашивая текущий элемент в нижней части навигации.
Каков наилучший подход для достижения этой цели?
В настоящее время для каждого действиякогда я использую BottomNavigationView
(в данном случае com.google.android.material.bottomnavigation.BottomNavigationView
),
Я дублирую почти тот же код для навигации между действиями, которые трудно поддерживать:
- Маркировка текущего
itemId
Установка setOnNavigationItemSelectedListener
без текущего itemId
.
jesta_bottom_navigation.selectedItemId = R.id.nav_do_jesta
jesta_bottom_navigation.setOnNavigationItemSelectedListener {
val intent = when (it.itemId) {
R.id.nav_ask_jesta -> {
Intent(this@DoJestaActivity, AskJestaActivity::class.java)
}
R.id.nav_status -> {
Intent(this@DoJestaActivity, StatusActivity::class.java)
}
// Settings Activity
else -> {
Intent(this@DoJestaActivity, SettingsActivity::class.java)
}
}
startActivity(intent)
true
}
frame_bottom_navigation_view.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/jesta_bottom_navigation"
style="@style/Widget.Jesta.BottomNavigationView"
android:layout_width="match_parent"
android:layout_height="@dimen/bottom_bar"
android:layout_gravity="bottom"
app:itemIconSize="30dp"
app:itemIconTint="@drawable/jesta_bottom_navigation_colors"
app:labelVisibilityMode="unlabeled"
app:menu="@menu/bottom_nav_drawer_menu" />
</FrameLayout>