154

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

那么如何使对话框以全屏模式显示?谢谢!

4

5 回答 5

262

尝试

Dialog dialog=new Dialog(this,android.R.style.Theme_Black_NoTitleBar_Fullscreen)
于 2011-09-29T12:16:07.800 回答
104

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

将此代码放在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,仅此而已。

EDIT2:要支持材料库,请将 Gradle 依赖项添加到 app(module)build.gradle文件

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

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

于 2012-06-03T09:49:15.537 回答
64

我发现的最简单的方法

Dialog dialog=new Dialog(this,android.R.style.Theme_Black_NoTitleBar_Fullscreen);
        dialog.setContentView(R.layout.frame_help);
        dialog.show();
于 2014-04-16T14:35:43.503 回答
46

编辑直到 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;
}
于 2011-06-13T10:50:04.110 回答
40
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();

尝试这个。

于 2014-04-07T12:31:33.727 回答