it-swarm.com.de

Wie ändere ich die Farbe der Statusleiste, um sie an die App in Lollipop anzupassen? [Android]

Beim neuen Lollipop-Update ist mir aufgefallen, dass sich bei den nativen Google-Apps die Farbe der Statusleiste ändert, um mit der Aktionsleiste der von Ihnen ausgeführten App übereinzustimmen. Ich sehe, dass es auch auf der Twitter-App zu sehen ist, also denke ich, dass es nicht ausschließlich Google ist, der das kann.

Weiß jemand, wie man das macht, wenn es möglich ist?

96
Briscoooe

Verwenden Sie setStatusBarColor (int color) , um die Farbe der Statusleiste zu ändern. Laut Javadoc müssen wir auch einige Flags im Fenster setzen.

Code-Schnipsel:

Window window = activity.getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.setStatusBarColor(ContextCompat.getColor(activity, R.color.example_color));


Beachten Sie gemäß Material Design-Richtlinien Statusleistenfarbe und Aktionsleistenfarbe sollten unterschiedlich sein:

  • ActionBar sollte primäre 500-Farben verwenden
  • StatusBar sollte 700er Primärfarbe verwenden

Schauen Sie sich den Screenshot unten an:

enter image description here

218
klimat

Fügen Sie dies einfach in Ihre styles.xml ein. Das colorPrimary ist für die Aktionsleiste und das colorPrimaryDark für die Statusleiste.

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="Android:colorPrimary">@color/primary</item>
    <item name="Android:colorPrimaryDark">@color/primary_dark</item>
</style>

Dieses Bild vom Entwickler Android erklärt mehr über Farbpalette. Sie können mehr dazu lesen link .

enter image description here

47
Gjoko Bozinov

Eine andere Möglichkeit, die Farbe der Statusleiste festzulegen, ist style.xml.

Erstellen Sie dazu eine style.xml Datei unter res/values-v21 Ordner mit diesem Inhalt:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="AppTheme" parent="Android:Theme.Material">
        <!--   darker variant for the status bar and contextual app bars -->
        <item name="Android:colorPrimaryDark">@color/blue_dark</item>
    </style>
</resources>

Edit: Wie in den Kommentaren erwähnt, unterscheidet sich der Code bei der Verwendung von AppCompat. In der Datei res/values ​​/ style.xml verwenden Sie stattdessen:

<style name="Theme.MyTheme" parent="Theme.AppCompat.Light">   
    <!-- Set AppCompat’s color theming attrs -->
    <item name="colorPrimary">@color/my_awesome_red</item>
    <item name="colorPrimaryDark">@color/my_awesome_darker_red</item>
    <!-- Other attributes -->
</style>
40

Um die Farbe der Statusleiste festzulegen, erstellen Sie eine style.xml-Datei im Ordner res/values-v21 mit folgendem Inhalt:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <style name="AppBaseTheme" parent="AppTheme">
        <item name="Android:windowDrawsSystemBarBackgrounds">true</item>
        <item name="Android:statusBarColor">@color/blue</item>
    </style>

</resources>
21

Auch wenn Sie anders wollen status-bar Farbe für verschiedene Aktivitäten ( Fragmente ) Sie können dies mit den folgenden Schritten tun (Arbeiten an API 21 und höher):

Zuerst erstelle values21/style.xml und folgenden Code eingeben:

 <style name="AIO" parent="AIOBase">
            <item name="Android:windowDrawsSystemBarBackgrounds">true</item>
            <item name="Android:windowContentTransitions">true</item>
    </style>

Definieren Sie dann Weiß | Dunkel-Themen in Ihrem values/style.xml wie folgt:

 <style name="AIOBase" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">@color/color_primary</item>
        <item name="colorPrimaryDark">@color/color_primary_dark</item>
        <item name="colorAccent">@color/color_accent</item>
        <item name="Android:textColorPrimary">@Android:color/black</item>
        <item name="Android:statusBarColor" tools:targetApi="Lollipop">@color/color_primary_dark
        </item>
        <item name="Android:textColor">@color/gray_darkest</item>
        <item name="Android:windowBackground">@color/default_bg</item>
        <item name="Android:colorBackground">@color/default_bg</item>
    </style>


    <style name="AIO" parent="AIOBase" />

    <style name="AIO.Dark" parent="AIOBase">
        <item name="Android:statusBarColor" tools:targetApi="Lollipop">#171717
        </item>
    </style>

    <style name="AIO.White" parent="AIOBase">
        <item name="Android:statusBarColor" tools:targetApi="Lollipop">#bdbdbd
        </item>
    </style>

Vergessen Sie auch nicht, Themen in Ihrem manifest.xml.

3
Amir

Fügen Sie diese Zeile im Stil von v21 hinzu, wenn Sie zwei Stile verwenden.

  <item name="Android:statusBarColor">#43434f</item>
3
Amit Walke

In Android vor Lollipop-Geräten können Sie dies mit ProzessorTintManager tun. Wenn Sie Android= Studio verwenden, fügen Sie einfach Systembartint lib in Ihre gradle-Datei ein .

dependencies {
    compile 'com.readystatesoftware.systembartint:systembartint:1.0.3'
    ...
}

Dann in Ihrer Tätigkeit

// create manager instance after the content view is set
SystemBarTintManager mTintManager = new SystemBarTintManager(this);
// enable status bar tint
mTintManager.setStatusBarTintEnabled(true);
mTintManager.setTintColor(getResources().getColor(R.color.blue));
2