2016-05-19 19 views
0

Ich stelle die Aktionsleiste Farbe Dinamically.Wie aktualisiert man die Statusleiste Farbe auch transparent auf Schublade

Ich versuche, auf diese Weise:

getSupportActionBar().setBackgroundDrawable(new ColorDrawable(color)); 
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
    float[] hsv = new float[3]; 
    Color.colorToHSV(color, hsv); 
    hsv[2] *= 0.8f; 
    color = Color.HSVToColor(hsv); 
    getWindow().setStatusBarColor(color) 
} 

Wie Sie sehen können, habe ich die Aktionsleiste Farbe habe die Einrichtung und macht die Farbe dunkler in der Statusleiste werden setted. Ich weiß nicht, ob das der richtige Weg ist, aber bis jetzt funktioniert es.

Das Problem ist, wenn ich die Schublade öffnen, ist die Farbe nicht transparent. Wie kann ich es hier machen?

+0

Was bedeutet Schublade? Warum versteckst du es nicht einfach? – UDKOX

+0

drawer = navigation view/menu –

+1

Weil du 'android: fitsSystemWindow =" true "' für deine Schublade brauchst. 'DrawerLayout' überschreibt dann die Farbe der Statusleiste, und wenn Sie die Farbe ändern möchten, müssen Sie die' NavigationDrawer' Methode verwenden. Leider erinnere ich mich jetzt nicht daran, aber Name hat Wort "Bar" oder "Status" –

Antwort

1

Sie können dies tun, indem Sie Folgendes ein:

In Aktivität, die die Symbolleiste hält, in den onCreate():

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
    int flag = getWindow().getDecorView().getSystemUiVisibility(); 
    getWindow().getDecorView().setSystemUiVisibility(flag | View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); 
} 

In Stile-v21:

<item name="android:windowTranslucentStatus">false</item> 
<item name="android:statusBarColor">#30000000</item> <!-- This is gonna make status bar darker by 20% --> 

Dies sollte genug sein, damit es funktioniert.

+0

Funktioniert nicht ... Wo stelle ich die Farbe dynamisch ein? –

+0

Nun, wenn Sie Toolbar verwenden und es als supportActionBar festlegen, sollten Sie darauf verweisen. Ändern Sie einfach die Hintergrundfarbe Ihrer Symbolleiste. Ich meine: 'Symbolleiste Symbolleiste = (Symbolleiste) findViewByID (R.id.toolbar);' 'setSupportActionBar (Symbolleiste);' '// Hintergrundfarbe der Symbolleiste ändern" –

+0

Nach meinem Code mache ich es, bin ich? –