Ich möchte die Farbe der Statusleiste für meine App so ändern, dass sie weiß mit schwarzen Symbolen ist (anstelle des Standardschwarzes mit weißen Symbolen). Gibt es eine Möglichkeit, dies zu tun?
Ich möchte die Farbe der Statusleiste für meine App so ändern, dass sie weiß mit schwarzen Symbolen ist (anstelle des Standardschwarzes mit weißen Symbolen). Gibt es eine Möglichkeit, dies zu tun?
Antworten:
Mit Android M (API Level 23) können Sie dies vom Thema mit android:windowLightStatusBar
Attribut erreichen.
Bearbeiten:
Wie Pdroid erwähnt hat, kann dies auch programmatisch erreicht werden:
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
Es ist möglich, die weiße Statusleiste mit grauen Symbolen zu erstellen, z. B. auf diese Weise für SDK> = 23 (siehe Dokumentation ):
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:windowLightStatusBar">true</item>
</style>
in Ihrer styles.xml und setzen Sie die colorPrimary
auf weiß oder programmgesteuert:
getWindow().setStatusBarColor(Color.WHITE);
SDK >= 23
aber @being_sohelkhan hat aus irgendeinem Grund meine ursprüngliche Antwort bearbeitet ... stackoverflow.com/posts/46897243/revisions
Gerade zu meiner Aktivität auf Kotlin hinzugefügt:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
window.decorView.systemUiVisibility =View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
window.statusBarColor = Color.WHITE
}
Fügen Sie dies einfach Ihrem Stil hinzu
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
setze android: windowDrawsSystemBarBackgrounds auf true * . Dies ist eine Flagge, deren Beschreibung unten angegeben ist:
Flag, das angibt, ob dieses Fenster für das Zeichnen des Hintergrunds für die Systemleisten verantwortlich ist. Wenn true und das Fenster nicht schwebt, werden die Systemleisten mit einem transparenten Hintergrund gezeichnet und die entsprechenden Bereiche in diesem Fenster werden mit den in {@link android.R.attr # statusBarColor} und {@link android.R angegebenen Farben gefüllt .attr # navigationBarColor}. Entspricht {@link android.view.WindowManager.LayoutParams # FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS}.
Sie können es auf diese Weise in Kotlin verwenden
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
Stellen Sie sicher, dass Sie es onCreate()
vorher anrufensetContentView()
Dies ist nur möglich, wenn Sie die Kontrolle über das gesamte ROM haben, um dies manuell anzupassen. Ich empfehle Ihnen, eine hellgraue Farbe für die Farbe der Statusleiste in Ihrem Thema zu verwenden, wie dies beim Google Drive der Fall ist.
Bearbeiten: Bitte beziehen Sie sich auf @Wrekcker Antwort, da sich dies in Android M geändert hat.
Ich hatte das gleiche Problem.
Mir ist aufgefallen, dass ein normales Layout wie RelativeLayout nicht funktioniert. Aber als ich zu dieser Support-Bibliothek wie CordinatorLayout wechselte, hat es endlich angefangen zu funktionieren. Versuche dies.
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context=".Activities.Activity">
<android.support.v7.widget.Toolbar
android:id="@+id/tb_activity"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.CoordinatorLayout>
<********* UNTER ANDEREN ATTRIBUTEN ************>
Stile
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="AppTheme.NoActionBar" parent="AppTheme">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
Und im Manifest
<activity
android:name=".Activities.MyActivity"
android:label="Activity"
android:theme="@style/AppTheme.NoActionBar">
</activity>