2015-03-19 21 views
6

PencereTranslucentStatus'u, kullanıcı lolipop ve üstü açıkken true değerine ayarlamak istiyorum (aksi halde kitkat üzerinde), uygulama çubuğu sistem çubuğunun içinde görünür. Lolipop üzerinde iyidir. Her versiyon için ayrı styles.xml yapmadan, artık yapmak zorunda kalmamanız gereken bir şey var. Java'da nasıl kurabilirim?Set windowTranslucentStatus = true olduğunda doğru lolipop veya daha yüksek

Aşağıdaki kod benim ana bilgisayarımda var ama sıcak pencereyi bilmiyorTranslucentStatus ... Herhangi bir fikir var mı?

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

cevap

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

benim onCreate yöntemin en üstünde, kullanılan ve aynı zamanda setContentView sonra çalıştı ama değil ettik herhangi bir fark yaratıyor gibi görünüyor. Sistem çıktısı, kodun çalıştırıldığını doğrular ancak kodla aynı veya kodsuz olarak görünür. – raptor

+0

Cevabımı düzenledim, şimdi çalışıp çalışmadığını kontrol ettim, lütfen kontrol edin. – Satty

+0

Mükemmel çalışan şerefe teşekkürler! – raptor

0

bu kullanarak istediğiniz zaman saydam veya olmasın arasında geçiş yapabilirsiniz:

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); 
    } 
} 
İlgili konular