Строка состояния Honeycomb dim minSdkVersion в манифесте < 11

#android #android-3.0-honeycomb

#Android #android-3.0-honeycomb

Вопрос:

Я пытаюсь затемнить строку состояния в Honeycomb, она работает так, как рекомендовано eslewhere, используя этот вызов

 View.setSystemUiVisibility(View.STATUS_BAR_HIDDEN)
  

Проблема в том, что это работает, только если в манифесте есть android: minSdkVersion=»11″.

Я хотел бы поддерживать устройства начиная с версии API 7 и по-прежнему иметь возможность затемнять строку состояния, если она присутствует.

Есть ли какая-то волшебная комбинация настроек, делающая это возможным?

Ответ №1:

Хорошо, проблема обнаружена и исправлена через некоторое время:

Мой манифест пропустил (на самом деле был неправильно напечатан) android: targetSdkVersion =»11″. При установке этого параметра строка состояния затемняется, и minSdkVersion может быть < 11 по желанию.

Комментарии:

1. Я сделал это, и это работает для меня, на Android 14. Но я все еще не понимаю, почему изменение цели заставляет его работать. Кто-нибудь знает?

2. @Derzu потому что этот метод был определен в Honeycomb, т.Е. Версия SDK> = 11. Когда вы устанавливаете targetSdk ниже 11, ваша среда IDE использует более старый SDK для компиляции вашего проекта и, следовательно, не может найти этот метод и выдает ошибку. Смотрите мой ответ ниже.

Ответ №2:

Значение Null, вы забыли предоставить исходный код. Чтобы избежать сбоев при предварительной обработке HONEYCOMB, вы должны использовать such if -statement:

         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
            View.setSystemUiVisibility(SYSTEM_UI_FLAG_LOW_PROFILE);