Но если я создаю новый проект с «Empty View Activity» и реализую Bottom Nav вручную , вид немного высоковат.
Из шаблона Android
Создано мной
Я создал вручную, используя тот же код, что и Нижний шаблон навигации Android предоставление.
Код: Выделить всё
navigationFragmentKtx = "2.8.4"
navigationUiKtx = "2.8.4"
androidx-navigation-fragment-ktx = { group = "androidx.navigation", name = "navigation-fragment-ktx", version.ref = "navigationFragmentKtx" }
androidx-navigation-ui-ktx = { group = "androidx.navigation", name = "navigation-ui-ktx", version.ref = "navigationUiKtx" }
Код: Выделить всё
@color/purple_200
@color/purple_700
@color/black
@color/teal_200
@color/teal_200
@color/black
?attr/colorPrimaryVariant
Код: Выделить всё
package com.example.bottomnavbyme
import android.os.Bundle
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.navigation.findNavController
import androidx.navigation.ui.AppBarConfiguration
import androidx.navigation.ui.setupWithNavController
import com.example.bottomnavbyme.databinding.ActivityMainBinding
import com.google.android.material.bottomnavigation.BottomNavigationView
import androidx.navigation.ui.setupActionBarWithNavController
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
enableEdgeToEdge()
setContentView(binding.root)
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
insets
}
val navView: BottomNavigationView = binding.navView
val navController = findNavController(R.id.nav_host_fragment_activity_main)
// Passing each menu ID as a set of Ids because each
// menu should be considered as top level destinations.
val appBarConfiguration = AppBarConfiguration(
setOf(
R.id.navigation_home, R.id.navigation_dashboard, R.id.navigation_notifications
)
)
setupActionBarWithNavController(navController, appBarConfiguration)
navView.setupWithNavController(navController)
}
}
Код: Выделить всё
В этом проекте у меня есть 3 фрагмента HomeFragment.kt, DashboardFragment.kt и NotificationsFragment .kt
и соответствующие им фрагмент_home.xml, фрагмент_dashboard.xml, фрагмент_нотификаций.xml
не предоставляют их, поскольку макет содержит только один TextView, ничего особенного.
Дополнительная информация
Код: Выделить всё
compileSdk = 35
Код: Выделить всё
minSdk = 28
Код: Выделить всё
targetSdk = 35
Подробнее здесь: https://stackoverflow.com/questions/792 ... in-android