У меня есть активность, в которой у меня есть BottomNavigationView
. Я сделал отдельные фрагменты для каждого ButtomNavigationView
предметов. Я хотел иметь прозрачную строку состояния для одного из фрагментов (HomeFragment
) и иметь обычный ActionBar для остальных.
Итак, я устанавливаю прозрачную строку состояния в HomeFragment
, как показано ниже
fun enableFullScreen(activity: Activity){
if ((19 until 21).contains(Build.VERSION.SDK_INT)) {
setWindowFlag(activity, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, true)
}
if (Build.VERSION.SDK_INT >= 19) {
activity.window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
}
if (Build.VERSION.SDK_INT >= 21) {
setWindowFlag(activity, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, false)
activity.window.statusBarColor = Color.TRANSPARENT
}
}
private fun setWindowFlag(activity: Activity, bits: Int, on: Boolean) {
val win = activity.window
val winParams = win.attributes
if (on) {
winParams.flags = winParams.flags or bits
} else {
winParams.flags = winParams.flags and bits.inv()
}
win.attributes = winParams
}
А в других моих фрагментах я перехожу в нормальное состояние, как показано ниже
fun disableFullScreen(activity: Activity){
if (Build.VERSION.SDK_INT >= 19) {
activity.window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
activity.window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LOW_PROFILE
}
if (Build.VERSION.SDK_INT >= 23){
activity.window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
}
}
Я получаю то, что намереваюсь сделать, но есть небольшая ошибка, которую я не могу выяснить.
Когда я перехожу к HomeFragment
, который является прозрачной строкой состояния, BottomNavigationView
поднимается и возвращается на свое первоначальное место. Иногда он просто остается включенным, и если я снова нажимаю кнопку Home
, он выключается.
![enter image description here](https://i.stack.imgur.com/MJAW1.gif)
Для справки вот мой activity_main
макет
<?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"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".main.MainActivity">
<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="56dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/navigation"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="0dp"
android:layout_marginEnd="0dp"
app:itemTextColor="@color/green"
android:background="?android:attr/windowBackground"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:menu="@menu/navigation"/>
</androidx.constraintlayout.widget.ConstraintLayout>
Что я делаю не так? Или есть какой-нибудь лучший способ сделать то, что я собираюсь сделать?