2015-03-19 3 views
6

Ich möchte windowTranslucentStatus auf true setzen, wenn der Benutzer auf lollipop und höher ist, weil sonst (zumindest auf kitkat) die Appleiste in der Systemleiste erscheint. Auf Lollipop ist es in Ordnung. Ohne separate styles.xml für jede Version zu erstellen, die Sie anscheinend nicht mehr tun sollten, wie kann ich sie in Java einstellen?Setze windowTranslucentStatus = true wenn Android Lollipop oder höher

Ich habe den folgenden Code in meiner mainActivity aber weiß nicht hot windowTranslucentStatus ... Irgendwelche Ideen?

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
    // set windowTranslucentStatus = true 
} 

Antwort

19
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
     Window w = getWindow(); // in Activity's onCreate() for instance 
     w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); 
     w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); 
    } 
+0

ich verwendet habe, dass an der Spitze meiner onCreate Methode und auch nach setContentView versucht, aber nicht scheinen einen Unterschied zu machen. Der Systemausdruck bestätigt, dass der Code ausgeführt wird, sieht aber mit oder ohne Code gleich aus. – raptor

+0

Ich habe meine Antwort bearbeitet, ich habe überprüft, ob sie jetzt funktioniert, bitte nachsehen. – Satty

+0

Prost das funktioniert perfekt danke! – raptor

0

Sie zwischen durchscheinend wechseln kann oder nicht, wenn Sie diese verwenden möchten:

public static void setTranslucent(Activity activity, boolean translucent){ 
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
    Window w = activity.getWindow(); 
    if(translucent) { 
    w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); 
    } 
    else{ 
    w.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); 
    } 
}