Прозрачная строка состояния темного текста с непрозрачной панелью навигации

Подождите, это не дубликат

Подобный вопрос был задан здесь, но не в отношении строки состояния темного текста.

Что я хочу сделать

Я хочу достичь 3 вещей одновременно:

  1. Прозрачная строка состояния (не скрывая!)
  2. Строка состояния темного текста
  3. Непрозрачная (или черная) панель навигации (которая не позволяет содержимому активности надуваться под ним)

Что я пробовал

Решение

            getWindow().getDecorView().setSystemUiVisibility(
                    View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                            | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);

можно достичь только 1 и 3;

Решение здесь может достичь только 1 и 2;

И решение здесь может достичь только 2 и 3....

Вопрос

Так есть ли способ достичь всех 1, 2 и 3?!

1 ответ

Решение

Внутри styles.xml:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    ...
    <item name="android:navigationBarColor">@android:color/black</item>
    <item name="android:statusBarColor">@android:color/transparent</item>
</style>

В деятельности onCreate():

override fun onCreate(savedInstanceState: Bundle?) {
  window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
  super.onCreate(savedInstanceState)
  setContentView(R.layout.activity_main)
}

Приведет к этому:

Другие вопросы по тегам