Làm cách nào để đặt hộp thoại hiển thị trên toàn màn hình? [đóng cửa]


129

Tôi có một GridView và tôi muốn tạo ra một hộp thoại, trong đó hình ảnh mà tôi đã chọn sẽ hiển thị trên toàn màn hình.

vậy làm thế nào tôi có thể làm cho hộp thoại hiển thị ở chế độ toàn màn hình? cảm ơn!


2
Nếu bạn muốn sử dụng FULL SCREEN Dialog, tại sao không sử dụng mặc định ACTION_VIEW Intentcho các tệp hình ảnh?
Sẽ Tate

xin lỗi tôi có nghĩa là gần như toàn màn hình hoặc hình ảnh đầy đủ
user790156

3
Kết hợp với câu trả lời cho willytate nếu bạn phải hộp thoại, sau đó sử dụng android.R.style.Theme_Translucent_NoTitleBar_Fullscreen trong chủ đề
ingsaurabh


3
@MartinPfeffer tôi cũng có một gợi ý cho người dùng trong tương lai nhưng câu hỏi đóng Andrew Barber không phải từ cộng đồng Android. Đây thực sự là một câu hỏi đơn giản, các nhà phát triển Android mới luôn tò mò về điều này. câu hỏi này nên được mở lại để có câu trả lời tốt hơn và người dùng trong tương lai
Abhishek Singh

Câu trả lời:


228

thử

Dialog dialog=new Dialog(this,android.R.style.Theme.Black.NoTitleBar.Fullscreen)

29
Để làm việc này đối với tôi, tôi đã phải sử dụng android.R.style.Theme_Black_NoTitleBar_Fullscreen
Ben Clayton

4
Call requires API level 11
Luis A. Florit

1
@ LuisA.Florit thử Theme_Black_NoTitleBar_Fullscreen
Felipe Caldas

21
Điều gì về toàn màn hình với một thanh tiêu đề?
Heath B ranh giới

1
Khi tôi làm điều này (bằng cách sử dụng DialogFragment), tôi thấy màu thanh trạng thái bị hủy bởi hộp thoại, toàn bộ màn hình là màu nền của hộp thoại. Có ai biết một cách giải quyết? Tôi đã thử thiết lập trạng tháiBarColor của cửa sổ hộp thoại, không có hiệu lực. PS: màu thanh điều hướng cũng bị giết.
androidguy

83

dựa trên liên kết này , câu trả lời đúng (mà tôi đã tự kiểm tra) là:

Đặt mã này vào hàm tạo hoặc onCreate()phương thức của hộp thoại:

getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT,
                WindowManager.LayoutParams.MATCH_PARENT);

Ngoài ra, đặt kiểu của hộp thoại thành:

<style name="full_screen_dialog">
    <item name="android:windowFrame">@null</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
    <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
</style>

điều này có thể đạt được thông qua các hàm tạo, ví dụ:

public FullScreenDialog(Context context)
{
  super(context, R.style.full_screen_dialog);
  ...

EDIT: một thay thế cho tất cả những điều trên sẽ là đặt kiểu cho android.R.style.Theme và đó là nó.


55

Cách dễ nhất tôi tìm thấy

Dialog dialog=new Dialog(this,android.R.style.Theme_Black_NoTitleBar_Fullscreen);
        dialog.setContentView(R.layout.frame_help);
        dialog.show();

1
cảm ơn đây thực sự là cách dễ nhất
CommonSenseCode

1
Làm việc như người ở!
Liên kết 88

1
Tuyệt quá. Hoạt động hoàn hảo
Jevgenij Kononov 24/2/2017

Đây là hoàn hảo! Nên là giải pháp được chấp nhận.
AmeyaB

Không thể thay đổi màu nền, vẫn là màu đen
Jemshit Iskenderov

42

EDIT Cho đến khi StackOverflow cho phép chúng tôi phiên bản câu trả lời của mình, đây là câu trả lời hoạt động cho Android 3 trở xuống. Vui lòng không tải xuống vì hiện tại nó không hoạt động, vì nó chắc chắn hoạt động với các phiên bản Android cũ hơn.


Bạn chỉ cần thêm một dòng vào onCreateDialog()phương thức của mình :

@Override
protected Dialog onCreateDialog(int id) {
    //all other dialog stuff (which dialog to display)

    //this line is what you need:
    dialog.getWindow().setFlags(LayoutParams.FLAG_FULLSCREEN, LayoutParams.FLAG_FULLSCREEN);

    return dialog;
}

1
Tại sao tôi không thể sử dụng FLAG_FULLSCREEN
user790156

2
Chà, thật khó để nói - Bạn đã nhập LayoutParams chưa? Bố cục xml của bạn được đặt thành fill_parent hay match_parent?
Caspar Harmer

12
sử dụng android.view.WindowManager.LayoutParams.FLAG_FULLSCREEN
Derzu

1
FLAG_FULLSCREEN cannot be resolved or is not a field
LRI

1
Có thể câu trả lời này đã hết hạn - nó có thể không hoạt động cho Android 4.0 trở lên.
Caspar Harmer

34
dialog = new Dialog(getActivity(),android.R.style.Theme_Translucent_NoTitleBar);
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    dialog.setContentView(R.layout.loading_screen);
    Window window = dialog.getWindow();
    WindowManager.LayoutParams wlp = window.getAttributes();

    wlp.gravity = Gravity.CENTER;
    wlp.flags &= ~WindowManager.LayoutParams.FLAG_BLUR_BEHIND;
    window.setAttributes(wlp);
    dialog.getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
    dialog.show();

thử cái này.


1
MATCH_PARENT làm việc cho tôi.
Ray
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.