如何制作材料设计全屏对话框?

Ale*_*kiy 6 android dialog fullscreen material-design

我尝试了很多变种来创建全屏对话框,但我不能.我需要一些东西,比如这个,有两个按钮:

图片

Luk*_*hen 5

如果您确实想要全屏对话框,只需扩展该类Dialog并添加一些调整即可。(您也可以在不扩展任何内容的情况下完成此操作,但我认为您可能希望将所有内容保留在一个地方)

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

super(context, R.style.DialogStyle);
Run Code Online (Sandbox Code Playgroud)

您还需要设置视图:(您可以在此处定义这两个按钮的位置/内容)

setContentView(R.layout.dialog_view);
Run Code Online (Sandbox Code Playgroud)

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

getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
Run Code Online (Sandbox Code Playgroud)

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

*编辑*

为了更清楚地说明你有两个选择:

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
    }
}
Run Code Online (Sandbox Code Playgroud)

然后当你想展示它时:

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

或者你可以这样做:

Dialog normalDialog = new Dialog(this, R.style.YourStyle);
normalDialog.setContentView(R.layout.dialog_view);
normalDialog.show();
Run Code Online (Sandbox Code Playgroud)