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

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

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

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

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

  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?!


person Sira Lam    schedule 15.03.2018    source источник
comment
The solution here can only achieve 1 and 2 Но в этом ответе панель навигации прозрачна, а содержимое активности отображается под ней. В то время как вы сказали, что хотите Opaque (or black) navigation bar (which does not let activity content inflate underneath it). Ваше требование не совсем понятно.   -  person azizbekian    schedule 25.05.2018
comment
Мое требование ясно, и вы уже его получили, я хочу непрозрачную панель навигации, но этот ответ может обеспечить только прозрачную панель навигации. Где противоречие?   -  person Sira Lam    schedule 25.05.2018
comment
Теперь я вижу, моя вина   -  person azizbekian    schedule 25.05.2018
comment
@azizbekian Не возражайте, ваш ответ сработал как волшебство!   -  person Sira Lam    schedule 25.05.2018


Ответы (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)
}

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

person azizbekian    schedule 25.05.2018