Сначала я введу свой код. Взгляните на темы:
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation">true</item>
<item name="android:textAllCaps">false</item>
<item name="android:windowEnableSplitTouch">false</item>
</style>
<style name="AppTheme.Launcher">
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation">true</item>
<item name="android:windowBackground">@drawable/launch_screen</item>
</style>
</resources>
AppTheme.Launcher используется для того, чтобы пользователь приветствовал "spla sh screen". В функции MainActivity
onCreate
я меняю тему, используя setTheme(R.style.AppTheme)
, а также скрываю панель действий, используя supportActionBar?.hide()
. Мое приложение ориентировано на фрагменты. У меня есть только одна активность, которая содержит схему навигации, которая имеет несколько фрагментов. Проблема в следующем:
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation">true</item>
В одном из моих фрагментов я хочу снова показать панель действий и не хочу, чтобы моя строка состояния была полупрозрачной, или, другими словами, я хочу, чтобы она быть видимым и иметь цвет PrimaryDark
. Для этого я написал функцию внутри MainActivity .
fun clearTranslucent() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
val w: Window = window
w.clearFlags(
WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
)
w.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION)
}
}
Здесь начинается самое интересное. По какой-то причине этот пробел добавляется между ними. Если я решу закомментировать эту строку WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
, результаты будут еще более странными. Строка состояния становится серым , и мой ScrollView
перестает работать. Эта же ошибка следует за мной в нескольких фрагментах, когда я хочу изменить оригинальную тему упражнения. Я пытался изменить тему из фрагмента, но это не работает. Где-то читал, что тему «Активность» можно изменить только из функции onCreate
. Почему мой макет плохо себя ведет?