2016-02-10 29 views
5

Tôi muốn tạo hộp thoại có toàn màn hình nhưng không ẩn thanh trạng thái.Android làm cho toàn màn hình hộp thoại với thanh trạng thái hiển thị

Nếu sử dụng kiểu Theme_Light_NoTitleBar_Fullscreen, hộp thoại chiếm toàn bộ màn hình.

Nếu sử dụng kiểu Theme_Material_Light_NoActionBar_TranslucentDecor, có vẻ như hoạt động nhưng đầu hộp thoại thực sự trở nên trong suốt. Tôi có thể làm cho nó tốt hơn bằng cách hỏi chiều cao thanh trạng thái và thêm phần đệm trên vào bố cục hộp thoại của tôi. Giải pháp này có vẻ hoạt động tốt, ngoại trừ nó không hoạt động nếu tôi đính kèm một hình ảnh động cho nó.

Tôi rất bối rối vì sao Google làm cho hộp thoại trở nên phức tạp để sử dụng, và nếu tôi làm đúng để tạo một hộp thoại toàn màn hình ở đây?

Trả lời

2

Tôi đã tìm thấy một đoạn trích từ một blog, sau một vài lần thử tôi thấy rằng tôi phải sử dụng Theme_Black_NoTitleBar_Fullscreen trong hàm tạo, cùng với đoạn mã trong onCreate. bây giờ hộp thoại của tôi là toàn màn hình và hiển thị thanh trạng thái.

public YourCustomDiag(Activity act){ 
    //step 1, required. to stretch the dialog to full screen 
    super(act, android.R.style.Theme_Black_NoTitleBar_Fullscreen); 
} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.custom_dialog_layout); 
    KeepStatusBar(); 
} 

//step 2, required 
private void KeepStatusBar(){  
    WindowManager.LayoutParams attrs = getWindow().getAttributes(); 
    attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN; 
    getWindow().setAttributes(attrs); 
} 

this is the source where i found the snipplet

6

Chỉ cần sử dụng THEME_BLACK_NoTitleBar làm việc cho tôi !!!

+0

Làm việc cho tôi. Giải pháp tốt nhất! – TrueCH

+0

cũng làm việc cho tôi, câu trả lời này sẽ nhận được nhiều tiền đề hơn. – Nadimuddin

1

Sử dụng android.R.style.Theme_Black_NoTitleBar

AlertDialog.Builder builder = new AlertDialog.Builder(context, 
        android.R.style.Theme_Black_NoTitleBar); 

Example screen

Các vấn đề liên quan