如何设置对话框以全屏显示?[关闭]


129

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

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


2
如果要使用FULL SCREEN Dialog,为什么不只ACTION_VIEW Intent对图像文件使用默认值?
Will Tate

抱歉,我的意思是几乎全屏或全图
user790156 2011年

3
结合是否愿意对话的答案,然后使用android.R.style.Theme_Translucent_NoTitleBar_Fullscreen主题
ingsaurabh 2011年


3
@MartinPfeffer我也对未来的用户有建议,但问题已解决Andrew Barber不是来自Android社区。这确实是一个简单的问题,新的android开发人员总是对此感到好奇。这个问题应该再次开放,以期得到更好的答案和将来的用户
Abhishek Singh,

Answers:


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
路易斯·弗洛里特

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.Theme,仅此而已。



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

2
好吧,这很难说-您是否导入了LayoutParams?您的布局xml是否设置为fill_parent或match_parent?
卡斯珀·哈默尔

12
使用android.view.WindowManager.LayoutParams.FLAG_FULLSCREEN
Derzu 2012年

1
错误:FLAG_FULLSCREEN cannot be resolved or is not a field
Luis A. Florit

1
该答案可能已经过时-可能不适用于android 4.0及更高版本。
卡斯珀·哈默

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为我工作。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.