如何设置对话框显示在全屏幕?

我有一个 GridView,我想做一个对话框的实现 我选择的图片应该全屏显示。

那么我怎样才能使对话框在全屏模式下显示呢? 谢谢!

263761 次浏览

在 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;
}

试试看

Dialog dialog=new Dialog(this,android.R.style.Theme_Black_NoTitleBar_Fullscreen)

基于 这个链接,正确答案(我自己测试过)是:

将这段代码放入构造函数或对话框的 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.ThemeOverlay的样式,就是这样。

编辑2: 为了支持材料库,在应用程序(模块) build.gradle文件中添加 Gradle 依赖项

implementation "com.google.android.material:material:$material_version"

然后将对话框的主题设置为 R.style.ThemeOverlay_MaterialComponents

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();

试试这个。

我找到的最简单的方法

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