Я не использую какие-либо стили/темы или какие-либо сложные настройки, но вид нижней навигации принимает неожиданную высоту,
Я использую wrap_content для высоты, поэтому получил следующий вывод:
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id = "@+id/bottom_nav"
android:layout_width = "match_parent"
**android:layout_height = "wrap_content"**
app:labelVisibilityMode = "selected"
app:menu = "@menu/bottom_nav_menu" />
и при использовании фиксированной высоты, т. е. ?attr/actionbarsize, я получаю следующий вывод (все значки/метки свернуты):
код:
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id = "@+id/bottom_nav"
android:layout_width = "match_parent"
android:layout_height = "?attr/actionBarSize"
app:labelVisibilityMode = "selected"
app:menu = "@menu/bottom_nav_menu" />
Полный код макета:
<?xml version = "1.0" encoding = "utf-8"?>
<LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
xmlns:app = "http://schemas.android.com/apk/res-auto"
xmlns:tools = "http://schemas.android.com/tools"
android:id = "@+id/main"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
android:orientation = "vertical"
tools:context = ".AppInstalledCheckActivity"
android:background = "#FFEB3B">
<EditText
android:id = "@+id/edittextPackageName"
android:layout_width = "match_parent"
android:layout_height = "60dp"
android:hint = "Enter Package Name" />
<Button
android:id = "@+id/buttonCheckInstalled"
android:layout_width = "match_parent"
android:layout_height = "45dp"
android:text = "Enter Package Name" />
<androidx.fragment.app.FragmentContainerView
android:id = "@+id/nav_host_fragment"
android:name = "androidx.navigation.fragment.NavHostFragment"
android:layout_width = "match_parent"
android:layout_height = "400dp"
app:navGraph = "@navigation/navgraph" />
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id = "@+id/bottom_nav"
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
app:labelVisibilityMode = "selected"
app:menu = "@menu/bottom_nav_menu" />
</LinearLayout>
Я хочу, чтобы он имел равную или аналогичную высоту, как инструмент/панель действий.
Вам нужно изменить
<androidx.fragment.app.FragmentContainerView
android:id = "@+id/nav_host_fragment"
android:name = "androidx.navigation.fragment.NavHostFragment"
android:layout_width = "match_parent"
**android:layout_height = "400dp"**
app:navGraph = "@navigation/navgraph" />
к
**android:layout_height = "match_parent"**
Я исправил и написал правильный ответ, пожалуйста, проверьте.
Необходимо внести два изменения:
Измените корневой LinearLayout на RelativeLayout:
<RelativeLayout xmlns:android = "http://schemas.android.com/apk/res/android"
xmlns:app = "http://schemas.android.com/apk/res-auto"
xmlns:tools = "http://schemas.android.com/tools"
android:id = "@+id/main"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
tools:context = ".AppInstalledCheckActivity">
Прокомментируйте/удалит windowInsetsListener из метода oncreate активности.
/* 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
}*/
Окончательный XML:
<?xml version = "1.0" encoding = "utf-8"?>
<RelativeLayout xmlns:android = "http://schemas.android.com/apk/res/android"
xmlns:app = "http://schemas.android.com/apk/res-auto"
xmlns:tools = "http://schemas.android.com/tools"
android:id = "@+id/main"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
android:orientation = "vertical"
tools:context = ".AppInstalledCheckActivity">
<LinearLayout
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:orientation = "vertical">
<EditText
android:id = "@+id/edittextPackageName"
android:layout_width = "match_parent"
android:layout_height = "60dp"
android:hint = "Enter Package Name" />
<Button
android:id = "@+id/buttonCheckInstalled"
android:layout_width = "match_parent"
android:layout_height = "45dp"
android:text = "Enter Package Name" />
</LinearLayout>
<androidx.fragment.app.FragmentContainerView
android:layout_marginTop = "150dp"
android:id = "@+id/nav_host_fragment"
android:name = "androidx.navigation.fragment.NavHostFragment"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
app:navGraph = "@navigation/navgraph" />
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id = "@+id/bottom_nav"
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:layout_alignParentBottom = "true"
app:itemTextAppearance = "@style/TextAppearance.MaterialComponents.Caption"
app:labelVisibilityMode = "selected"
app:menu = "@menu/bottom_nav_menu" />
</RelativeLayout>
Вывод:
Я сделал это, и нижняя навигация стала ниже экрана, поскольку контейнер фрагментов занял всю высоту. это не может быть решением, поскольку высота нижней навигации не имеет ничего общего с высотой других дочерних представлений в родительском слое. @jamal