2014-10-20 2 views
36

В Android 4.4 KitKat вы можете настроить прозрачность элементов состояния и навигации с помощью элементов темы android:windowTranslucentStatus и android:windowTranslucentNavigation, а затем под полосами окна приложения расширяется и добавляется градиент , Однако на Android 5.0 Lollipop это было изменено, и теперь вместо градиента добавлен сплошной прозрачный цвет. Android 5.0 предлагает новые android:statusBarColor и android:navigationBarColor элементов под новым материалом темы, но при попытке установить эти элементы в @android:color/transparent окно приложения не распространяется, и если вы используете android:windowTranslucentStatus и android:windowTranslucentNavigation затем android:statusBarColor и android:navigationBarColor игнорируются.Android 4.4. Полупрозрачный стиль статуса и стиля навигации на Android 5.0

Я пропустил что-то, описанное на http://developer.android.com/training/material/theme.html#StatusBar?

enter image description here

ответ

63

Набор android:windowTranslucentStatus к ложным и установить android:statusBarColor в @android:color/transparent.

Затем добавьте код ниже:

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

Если вы хотите панель навигации, чтобы быть полупрозрачным, установите android:navigationBarColor в @android:color/transparent и объединить флаг View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION, а также.

Я не экспериментировал на панели навигации, но он будет работать.

+1

Отлично! Это работает как для системы, так и для панели навигации. Я не понимаю, почему это нигде не объясняется официальной документацией. Благодарю. – AxeEffect

+1

Спасибо, это сработало отлично! – Spotlight

+1

Я не уверен, почему, но getWindow(). GetDecorView(). SetSystemUiVisibility ( View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); делает его неудачным в моем коде. Я должен убедиться, что это НЕ в коде, чтобы заставить его работать. – easycheese

7

Добавить ниже линии к вашему стилю:

<item name="android:windowTranslucentStatus">true</item> 
<item name="android:windowTranslucentNavigation">true</item> 
2

Для уточнения @suckgamony's answer на этот вопрос:

  • Под леденец и выше, установка android:statusBarColor или android:navigationBarColor к @android:color/transparent сделает Строка состояния или Панель навигации (соответственно) полностью прозрачна, если:
  • android:windowTranslucentStatus или android:windowTranslucentNavigation не установлена ​​истина, в этом случае Status Bar или Navigation Bar (соответственно) устанавливается в твердой прозрачного цвета @AxeEffect описывает (опять же, в соответствии с Lollipop и выше);
  • android:statusBarColor и android:navigationBarColor могут быть использованы только для Android версии 21 (Lollipop 5.0) или выше. Как описано в the referred to answer, android:windowTranslucentStatus или android:windowTranslucentNavigation при использовании с Kitkat обеспечивают прозрачные градиенты, а не полную прозрачность.
Смежные вопросы