Come modificare il colore della barra di stato in Android

? codercat @ | Original: StackOverFlow
---

Prima di tutto non è un duplicato di http://stackoverflow.com/questions/9044970/how-to-change-the-background-color-of-android-status-bar

Come posso cambiare il colore della barra di stato con cui il colore ha nella barra di navigazione .

voglio il colore della barra di stato sulla base di barra di colore di navigazione

Come modificare il colore della barra di stato in Android

---

Top 5 Risposta

1codercat @

Update:

Lollipop:

public abstract void setStatusBarColor (int color)

Aggiunta del livello di API 21

Imposta il colore della barra di stato . Per questo abbia effetto, la finestra deve essere disegnare gli sfondi barra di sistema con FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS e FLAG_TRANSLUCENT_STATUS non deve essere impostato . Se non è opaco, considerare la creazione di SYSTEM_UI_FLAG_LAYOUT_STABLE e SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN .

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

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

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

Come modificare il colore della barra di stato in Android

Il transitionName per lo sfondo vista sarà "android : Stato : background" .

E ' possibile solo KitKat e dopo .

Applicare sfondo colorazione per l'interfaccia utente del sistema Android utilizzando KitKat modalità trasparenti .

Come modificare il colore della barra di stato in Android

https://github.com/jgilfelt/SystemBarTint

2Giorgio @

Android 5.0 Lollipop introdotto tema Materiale design che automaticamente i colori della barra di stato in base al valore ColorPrimaryDark del tema .

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/

Come modificare il colore della barra di stato in Android

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

3itzhar @

questo è un modo molto semplice per farlo senza Library: se la versione del sistema operativo non è supportata - sotto kitkat - quindi niente è accaduto . faccio questa procedura :

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" />

Poi ho fatto questo metodo :

 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);
     }
}

inoltre è necessario quelli entrambi i metodi per ottenere un'azione Bar & amp ; barra di stato Altezza :

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;
}

quindi l'unica cosa che serve è la linea per impostare lo stato barra dei colori :

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

Inserite questo è il vostro valori - V21 / styles.xml, per attivare questo su Lollipop :

<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 @

Per modificare lo stato delle barre di colore in API 21 e sopra uso http://developer.android.com/reference/android/view/Window.html#setStatusBarColor(int ) . Secondo javadoc, abbiamo bisogno anche di impostare alcune bandiere sulla finestra .

Frammento di codice di lavoro:

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));