Nun, die Izhar-Lösung war in Ordnung, aber ich persönlich versuche, Code zu vermeiden, der so aussieht:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
//Do what you need for this SDK
};
Außerdem möchte ich auch keinen Code duplizieren. In Ihrer Antwort muss ich in allen Aktivitäten eine solche Codezeile hinzufügen:
setStatusBarColor(findViewById(R.id.statusBarBackground),getResources().getColor(android.R.color.white));
Also nahm ich die Izhar-Lösung und verwendete XML, um das gleiche Ergebnis zu erzielen: Erstellen Sie ein Layout für die StatusBar status_bar.xml
<View xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="@dimen/statusBarHeight"
android:background="@color/primaryColorDark"
android:elevation="@dimen/statusBarElevation">
Beachten Sie die Höhen- und Höhenattribute. Diese werden in den Werten "Werte-v19" und "Werte-v21" weiter unten festgelegt.
Fügen Sie dieses Layout Ihrem Aktivitätenlayout hinzu, indem Sie include, main_activity.xml, verwenden:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/Black" >
<include layout="@layout/status_bar"/>
<include android:id="@+id/app_bar" layout="@layout/app_bar"/>
//The rest of your layout
</RelativeLayout>
Fügen Sie für die Symbolleiste das Attribut "Oberer Rand" hinzu:
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="?android:attr/actionBarSize"
android:background="@color/primaryColor"
app:theme="@style/MyCustomToolBarTheme"
app:popupTheme="@style/ThemeOverlay.AppCompat.Dark"
android:elevation="@dimen/toolbarElevation"
android:layout_marginTop="@dimen/appBarTopMargin"
android:textDirection="ltr"
android:layoutDirection="ltr">
Fügen Sie in Ihren appTheme style-v19.xml und styles-v21.xml das windowTranslucent attr hinzu:
styles-v19.xml, v21:
<resources>
<item name="android:windowTranslucentStatus">true</item>
</resources>
Und schließlich fügen Sie auf Ihren Dimensionen, dimensions-v19, dimension-v21, die Werte für die Symbolleiste topMargin und die Höhe der statusBarHeight: dimension.xml für weniger als KitKat hinzu:
<resources>
<dimen name="toolbarElevation">4dp</dimen>
<dimen name="appBarTopMargin">0dp</dimen>
<dimen name="statusBarHeight">0dp</dimen>
</resources>
Die Höhe der Statusleiste beträgt für KitKat und höher immer 24dp dimension-v19.xml:
<resources>
<dimen name="statusBarHeight">24dp</dimen>
<dimen name="appBarTopMargin">24dp</dimen>
</resources>
dimension-v21.xml für Lolipop, fügen Sie bei Bedarf einfach die Höhe hinzu:
<resources>
<dimen name="statusBarElevation">4dp</dimen>
</resources>
Dies ist das Ergebnis für Jellybean KitKat und Lollipop: