2015-08-14 79 views

回答

3

如果你真的想要一个全屏对话框,只需扩展Dialog类并添加一些调整。 (你也可以在不扩展任何东西的情况下做到这一点,但我想你可能想把所有东西都放在一个地方)

在你的构造函数中,你需要设置样式(对于你的材质外观,或者它可以是一个空的样式标签):

super(context, R.style.DialogStyle); 

你还需要设置的观点:(在这里,您将定义哪里/什么这两个按钮)

setContentView(R.layout.dialog_view); 

最后,您可能还需要修改窗口布局参数:

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

我发现在我测试过的设备上设置样式是最重要的。

*编辑*

为了使它更加清楚一点,你有两个选择:

public class MyDialog extends Dialog { 

    public MyDialog(Context context) { 
     super(context, R.style.YourStyle); 
     setContentView(R.layout.dialog_view); 
     getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT); //Optional 
     //Any other code you want in your constructor 
    } 
} 

然后,当你想要显示它:

//Inside your activity 
MyDialog dialog = new MyDialog(this); //Assuming you are in an activity 'this' is your context 
dialog.show(); 

或者你可以只是这样做:

Dialog normalDialog = new Dialog(this, R.style.YourStyle); 
normalDialog.setContentView(R.layout.dialog_view); 
normalDialog.show(); 
+0

感谢您的回答。但我不明白在哪里需要使用这个代码:super(context,R.style.DialogStyle) –

+1

如果你不知道哪里会去,你需要做更多的关于android开发的研究。但我添加了一些编辑来帮助你多一点。 –

+0

哦!谢谢!这是我需要的。如果有人接受这个错误:android.viewWindowManager $ BadTokenException:无法添加窗口 - 标记null不适用于应用程序,只需使用YourActivity.this代替this或getApplicationContext() –

0

我同意使用新的活动。将HomeAsUp指示器设置为任何你想要的,然后保存按钮可以是设置为显示ifRoom的单个菜单项目。

http://developer.android.com/reference/android/app/ActionBar.html#setHomeAsUpIndicator(int)

机器人:showAsAction = [ “ifRoom” | “从不” “withText”| “总是”| “collapseActionView”]

+0

需要设置HomeAsUpIndicator的位置?如果我使用getActionBar()。setHomeAsUpIndicator会导致错误。 Min API在我的项目15中,但这种方法需要18. –

+0

使用'getSupportActionBar()。setHomeAsUpIndicator'。 – ieatacid

0

这是我用来显示没有动作条全屏对话框:

//Display fullscreen without actionbar 
    if(Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { 
     setStyle(DialogFragment.STYLE_NORMAL, android.R.style.Theme_Holo_Light_NoActionBar_Fullscreen); 
    } else { 
     setStyle(DialogFragment.STYLE_NORMAL, android.R.style.Theme_Material_Light_NoActionBar_Fullscreen); 
    }