2015-03-19 16 views
6

Tôi muốn đặt windowTranslucentStatus thành true khi người dùng ở trên kẹo và ở trên vì nếu không (ít nhất là trên kitkat) thanh ứng dụng xuất hiện bên trong thanh hệ thống. Trên kẹo que thì không sao. Mà không làm cho styles.xml riêng biệt cho mỗi phiên bản mà dường như bạn không cần phải làm nữa làm thế nào tôi có thể đặt nó trong java?Đặt windowTranslucentStatus = true khi android lollipop hoặc cao hơn

Tôi có mã sau trong mainActivity của tôi nhưng không biết hot windowTranslucentStatus ... Bất kỳ ý tưởng nào?

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

Trả lời

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

Tôi đã sử dụng mà ở phía trên cùng của phương pháp onCreate của tôi và cũng đã cố gắng sau setContentView nhưng không dường như tạo ra bất kỳ sự khác biệt nào. Hệ thống in ra xác nhận rằng mã đang được chạy nhưng có vẻ như có hoặc không có mã. – raptor

+0

Tôi đã chỉnh sửa câu trả lời của mình, tôi đã kiểm tra hoạt động của nó ngay bây giờ, vui lòng kiểm tra. – Satty

+0

Chúc mừng hoạt động hoàn hảo! – raptor

0

Bạn có thể chuyển đổi giữa mờ hay không bất cứ khi nào bạn muốn sử dụng này:

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); 
    } 
} 
Các vấn đề liên quan