windowLightNavigationBar не работает на Android 10 (Q)

Я пытаюсь сделать панель навигации светлой с темными точками, поэтому я сделал style-v27.xml с windowLightNavigationBar = true :

    <item name="android:windowLightNavigationBar">true</item>
    <item name="android:navigationBarColor">@android:color/white</item>

эта функция доступна на уровне API 27+ И:

  • он отлично работает на API 27 (Android 8.1) - эмулятор
  • он отлично работает на API 28 (Android 9) - эмулятор
  • НЕ работает на API 29 (Android 10) — эмулятор

На Android 10 точка остается белой, а фон также белым!:

введите здесь описание изображения

Кстати, я ориентируюсь на Api 29. Я тестировал на «ЭМУЛЯТОРЕ». У меня нет доступа к реальному устройству Android 10, чтобы подтвердить наличие этой ошибки.


person Saeed Arianmanesh    schedule 23.12.2019    source источник
comment
stackoverflow.com/a/56870080/3395198   -  person IntelliJ Amiya    schedule 23.12.2019
comment
@IntelliJAmiya спасибо за ответ! Я уже читал ту тему. это не то, что я имею в виду, или то, что я хочу. Я очень хорошо получаю эту функциональность на API 27 и API 28. проблема в API 29 (андроид 10).   -  person Saeed Arianmanesh    schedule 23.12.2019


Ответы (2)


Это была ошибка AVD, а не ошибка платформы Android. закройте Android Q AVD и обновите системные файлы Android 10 SDK. повторно открыть AVD. задача решена.

если это не помогло, удалите AVD и создайте его заново.

person Saeed Arianmanesh    schedule 25.12.2019
comment
Я столкнулся с этой проблемой на Pixel с Android 10 (QP1A.191005.007.A3). Так что дело было не только в AVD. - person Tomas; 24.02.2021
comment
После нескольких часов отладки я обнаружил, что это происходит на Google Pixel в сочетании с этой строкой кода: window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE, все остальные версии Android (в эмуляторе) работают нормально. - person Tomas; 25.02.2021

Если вы установили видимость пользовательского интерфейса системы (например, View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR), это должно помочь в вашем основном действии через onCreate():

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    this.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
}

Спасибо @tomas

person User Rebo    schedule 23.03.2021