วิธีตั้งค่าไดอะล็อกให้แสดงแบบเต็มหน้าจอ [ปิด]


129

ฉันมีGridViewและฉันต้องการสร้างการโต้ตอบซึ่งรูปภาพที่ฉันเลือกควรแสดงในแบบเต็มหน้าจอ

ดังนั้นฉันจะทำให้กล่องโต้ตอบแสดงในโหมดเต็มหน้าจอได้อย่างไร ขอบคุณ!


2
หากคุณต้องการใช้ FULL SCREEN Dialogทำไมไม่ใช้เฉพาะค่าเริ่มต้นACTION_VIEW Intentสำหรับไฟล์รูปภาพ?
Will Tate

ขอโทษฉันหมายถึงเกือบเต็มหน้าจอหรือเต็มรูปแบบ
user790156

3
ใช้ร่วมกับคำตอบของ Willytate หากคุณต้องโต้ตอบจากนั้นใช้ android.R.styleTheme_Translucent_NoTitleBar_Fullscreen ในชุดรูปแบบ
ingsaurabh

สิ่งนี้อาจช่วย stackoverflow.com/a/2700683/1118886
Sheraz Ahmad Khilji

3
@MartinPfeffer ฉันยังมีข้อเสนอแนะสำหรับผู้ใช้ในอนาคต แต่คำถามปิด Andrew Barber ไม่ได้มาจากชุมชน Android นี่เป็นคำถามง่ายๆที่นักพัฒนาระบบ Android ใหม่มักจะสงสัยเกี่ยวกับเรื่องนี้ คำถามนี้ควรเปิดอีกครั้งเพื่อให้ได้คำตอบที่ดีขึ้นและผู้ใช้ในอนาคต
Abhishek Singh

คำตอบ:


228

ลอง

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

29
สำหรับสิ่งนี้ใช้งานได้สำหรับฉันฉันต้องใช้ android.R.style.Theme_Black_NoTitleBar_Fullscreen
Ben Clayton

4
Call requires API level 11
Luis A. Florit

1
@ LuisA.Florit ลอง Theme_Black_NoTitleBar_Fullscreen
Felipe Caldas

21
สิ่งที่เกี่ยวกับเต็มหน้าจอด้วยแถบชื่อเรื่อง?
Heath Borders

1
เมื่อฉันทำสิ่งนี้ (โดยใช้DialogFragment) ฉันเห็นสีของแถบสถานะถูกฆ่าโดยกล่องโต้ตอบทั้งหน้าจอเป็นสีพื้นหลังของกล่องโต้ตอบ ไม่มีใครรู้วิธีแก้ปัญหา? ฉันพยายามตั้งค่า statusBarColor ของหน้าต่างของไดอะล็อกให้ไม่มีผล PS: สีแถบการนำทางถูกฆ่าเช่นกัน
androidguy

83

จากลิงค์นี้คำตอบที่ถูกต้อง (ซึ่งฉันทดสอบด้วยตนเอง) คือ:

ใส่รหัสนี้ในตัวสร้างหรือonCreate()วิธีการโต้ตอบ:

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

นอกจากนี้ให้ตั้งค่าสไตล์ของกล่องโต้ตอบเป็น:

<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>

สิ่งนี้สามารถทำได้ผ่านตัวสร้างเช่น:

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

แก้ไข: ทางเลือกทั้งหมดข้างต้นคือการกำหนดสไตล์ให้กับ Android.R.style ชุดรูปแบบและนั่นคือมัน


55

วิธีที่ง่ายที่สุดที่ฉันพบ

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

1
ขอบคุณนี่เป็นวิธีที่ง่ายที่สุดจริงๆ!
CommonSenseCode

1
ทำงานเหมือนจับใจ!
ลิงก์ 88

1
ยิ่งใหญ่ ทำงานได้อย่างสมบูรณ์แบบ
Jevgenij Kononov

มันสมบูรณ์แบบ! ควรเป็นทางออกที่ได้รับการยอมรับ
AmeyaB

ไม่สามารถเปลี่ยนสีพื้นหลัง, สีดำ
Jemshit Iskenderov

42

แก้ไขจนกว่าจะถึงเวลาเช่น StackOverflow อนุญาตให้เราแก้ไขคำตอบของเรานี่คือคำตอบที่ใช้งานได้กับ Android 3 และด้านล่าง โปรดอย่าลงคะแนนเพราะมันไม่ทำงานสำหรับคุณตอนนี้เพราะมันใช้ได้กับ Android รุ่นเก่ากว่า


คุณควรเพิ่มหนึ่งบรรทัดในonCreateDialog()วิธีการของคุณเท่านั้น:

@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
ทำไมฉันถึงใช้ FLAG_FULLSCREEN ไม่ได้
user790156

2
มันยากที่จะพูด - คุณนำเข้า LayoutParams หรือไม่ เค้าโครง xml ของคุณถูกตั้งค่าเป็น fill_parent หรือ match_parent หรือไม่
Caspar Harmer

12
ใช้ android.view.WindowManager.LayoutParams.FLAG_FULLSCREEN
Derzu

1
ข้อผิดพลาด:FLAG_FULLSCREEN cannot be resolved or is not a field
Luis A. Florit

1
เป็นไปได้ว่าคำตอบนี้ล้าสมัย - อาจใช้ไม่ได้กับ android 4.0 ขึ้นไป
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();

ลองนี้


1
MATCH_PARENT ใช้งานได้สำหรับฉัน
เรย์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.