- Использование официального компонента навигации Android.
Компонент навигации Android предоставляет простой и декларативный способ реализации навигации в вашем приложении. Чтобы создать нижнюю навигацию с помощью этого компонента, вы можете определить граф навигации с несколькими пунктами назначения и использовать виджетBottomNavigationViewдля отображения пользовательского интерфейса навигации. Вот пример:
<!-- activity_main.xml -->
<androidx.coordinatorlayout.widget.CoordinatorLayout 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">
<fragment
android:id="@+id/nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:navGraph="@navigation/nav_graph" />
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottom_navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
app:menu="@menu/bottom_navigation_menu" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
// MainActivity.kt
class MainActivity : AppCompatActivity() {
private lateinit var navController: NavController
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val bottomNavigationView = findViewById<BottomNavigationView>(R.id.bottom_navigation)
navController = findNavController(R.id.nav_host_fragment)
bottomNavigationView.setupWithNavController(navController)
}
}
- Использование собственной реализации.
Если вы предпочитаете больше контроля над внешним видом и поведением нижней навигации, вы можете создать собственную реализацию с помощьюLinearLayoutилиConstraintLayout. Вот пример:
<!-- activity_main.xml -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageButton
android:id="@+id/home_button"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/ic_home"
android:contentDescription="@string/home" />
<ImageButton
android:id="@+id/search_button"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/ic_search"
android:contentDescription="@string/search" />
<ImageButton
android:id="@+id/profile_button"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/ic_profile"
android:contentDescription="@string/profile" />
</LinearLayout>
// MainActivity.kt
class MainActivity : AppCompatActivity() {
private lateinit var homeButton: ImageButton
private lateinit var searchButton: ImageButton
private lateinit var profileButton: ImageButton
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
homeButton = findViewById(R.id.home_button)
searchButton = findViewById(R.id.search_button)
profileButton = findViewById(R.id.profile_button)
homeButton.setOnClickListener { /* Handle home button click */ }
searchButton.setOnClickListener { /* Handle search button click */ }
profileButton.setOnClickListener { /* Handle profile button click */ }
}
}
Это всего лишь два примера того, как можно реализовать удобочитаемую нижнюю навигацию в Android. Не забудьте настроить внешний вид и поведение в соответствии с вашими требованиями.