Wie man die Statusleiste Farbe in android ändern

? codercat @ | Original: StackOverFlow
---

Zunächst einmal ist es nicht ein Duplikate aus http://stackoverflow.com/questions/9044970/how-to-change-the-background-color-of-android-status-bar

Wie kann ich die Statusleiste Farbe, durch die Farbe in der Navigationsleiste haben .

Ich möchte in der Statusleiste Farbe basierend auf Navigationsleiste Farbe

Wie man die Statusleiste Farbe in android ändern

---

Top 5 Antwort

1codercat @

Update:

Lollipop:

public abstract void setStatusBarColor (int color)

Hinzugefügt in API-Ebene 21

Legt die Farbe der Statusleiste an . Damit dies wirksam wird, muss das Fenster zeichnen die Systemleiste Hintergründe mit FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS und FLAG_TRANSLUCENT_STATUS darf nicht gesetzt sein können. Wenn nicht undurchsichtig, erwägen SYSTEM_UI_FLAG_LAYOUT_STABLE und SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN .

offcial : http://developer.android.com/reference/android/view/Window.html#setStatusBarColor(int )

Beispiel: http://antonioleiva.com/material-design-everywhere/

https://chris.banes.me/2014/10/17/appcompat-v21/

Wie man die Statusleiste Farbe in android ändern

" : Status : Hintergrund android " Die transitionName für die Ansicht Hintergrund werden .

Es nur KitKat und nach .

Übernehmen Hintergrund färben auf die Android-System -Benutzeroberfläche bei Verwendung KitKat transluzenten Modi.

Wie man die Statusleiste Farbe in android ändern

https://github.com/jgilfelt/SystemBarTint

2Giorgio @

Android 5.0 eingeführt Lollipop Material Design Thema, das automatisch Farben in der Statusleiste auf der Grundlage der ColorPrimaryDark Wert des Themas.

This is supported on device pre-lollipop thanks to the library support-v7-appcompat starting from version 21. https://chris.banes.me/2014/10/17/appcompat-v21/

Wie man die Statusleiste Farbe in android ändern

https://developer.android.com/preview/material/theme.html

3itzhar @

das ist sehr einfache Möglichkeit, dies ohne jede Bibliothek zu tun : wenn die OS-Version wird nicht unterstützt - unter kitkat - also nichts passiert . Ich tue dies, vor:

in my xml i added to the top this View:
<View
        android:id="@+id/statusBarBackground"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

dann machte ich diese Methode:

 public void setStatusBarColor(View statusBar,int color){
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
           Window w = getWindow();
           w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
           //status bar height
           int actionBarHeight = getActionBarHeight();
           int statusBarHeight = getStatusBarHeight();
           //action bar height
           statusBar.getLayoutParams().height = actionBarHeight + statusBarHeight;
           statusBar.setBackgroundColor(color);
     }
}

Auch müssen die beiden Methoden zum Handeln Bar & amp bekommen ; Statusleiste Höhe:

public int getActionBarHeight() {
    int actionBarHeight = 0;
    TypedValue tv = new TypedValue();
    if (getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true))
    {
       actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data,getResources().getDisplayMetrics());
    }
    return actionBarHeight;
}

public int getStatusBarHeight() {
    int result = 0;
    int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
    if (resourceId > 0) {
        result = getResources().getDimensionPixelSize(resourceId);
    }
    return result;
}

dann das einzige, was Sie brauchen, ist diese Zeile Statusleiste Farbe gesetzt :

setStatusBarColor(findViewById(R.id.statusBarBackground),getResources().getColor(android.R.color.white));
4Niels @

Zeigen dies Ihre Werte - v21 / styles.xml, dies auf Lollipop zu aktivieren:

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light">
        <item name="colorPrimary">@color/color_primary</item>
        <item name="colorPrimaryDark">@color/color_secondary</item>
        <item name="colorAccent">@color/color_accent</item>
        <item name="android:statusBarColor">@color/color_primary</item>
    </style>
</resources>
5mklimek @

Um Statusleiste Farbe in API 21 und vor Gebrauch http://developer.android.com/reference/android/view/Window.html#setStatusBarColor(int ändern). Nach javadoc, müssen wir auch setzen einige Flaggen auf Fenster .

Arbeits Code-Snippet :

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