MDXDave.de

Informatikstudent der TH Köln // Android + Coding

Laden...

Transparente Status- und Navigationbar ab Android 4.4

veröffentlicht vor 4 Jahren, am 1. August 2014  |  Android      |  0 Kommentare

Ab Version 4.4 KitKat ist es für Entwickler möglich die Apps so zu programmieren dass die Statusbar transparent ist, bzw. gefärbt ist.

Dies erreicht man ziemlich simpel, indem man eine eigene styles.xml im Ordner values-v19 (für Versionen ab API 19) anlegt und folgenden Code verwendet:

<style name="Theme.MyAppTheme" parent="Theme.Sherlock.Light.DarkActionBar">
    <item name="android:windowTranslucentStatus">true</item>
    <item name="android:windowTranslucentNavigation">false</item>
</style>

Wobei Name und Parent je nach Anspruch geändert werden können, wichtig ist nur das windowTranslucentStatus-Attribut. Das Attribut windowTranslucentNavigation macht die Navigationsbar (bei OnScreen-Buttons) transparent - oder eben nicht.

Mithilfe von folgender Library ist es beispielsweise dann möglich die Statusbar nach belieben zu färben: https://github.com/jgilfelt/Sy...

Starten wir nun unsere App wird uns ein Problem auffallen:

Wie wir sehen wird der obere Teil der Liste unter der Actionbar "versteckt", da das Layout jetzt transparent ist wird alles nach oben "gezogen".

Es gibt jedoch eine ganz einfache Möglichkeit, das Layout wieder normal anzuzeigen, hierfür müssen wir im ersten Layout-Element (in diesem Fall ein LinearLayout) einfach folgendes Attribut hinzufügen:

android:fitsSystemWindows="true"

Gesamt sieht es dann in obigem Fall folgendermaßen aus:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:fitsSystemWindows="true" >
    <ListView
        android:id="@+id/list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:divider="#ccc"
        android:dividerHeight="1dp"
        android:scrollbars="none" >
    </ListView>
</LinearLayout>

Feedback gerne in den Kommentaren :)