如何让material设计全屏对话框?
How to make material design full screen dialog?
我尝试了很多变体来创建全屏对话框,但我做不到。我需要这样的东西,有两个按钮:
如果您真的想要一个全屏对话框,只需扩展 Dialog
class 并添加一些调整。 (你也可以在不扩展任何东西的情况下完成这个,但我想你可能想把所有东西都放在一个地方)
在你的构造函数中你需要设置样式(为了你的 material 外观,或者它可以是一个空的样式标签):
super(context, R.style.DialogStyle);
您还需要设置视图:(这是您定义 where/what 这两个按钮的地方)
setContentView(R.layout.dialog_view);
最后,您可能还需要修改 windows 布局参数:
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();
我同意使用新的activity。将 HomeAsUp 指示器设置为您想要的任何值,然后保存按钮可以是设置为显示 ifRoom 的单个菜单项。
http://developer.android.com/reference/android/app/ActionBar.html#setHomeAsUpIndicator(int)
android:showAsAction=["ifRoom" | "never" | "withText" | "always" | "collapseActionView"]
这是我用来显示没有操作栏的全屏对话框的方法:
//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);
}
我尝试了很多变体来创建全屏对话框,但我做不到。我需要这样的东西,有两个按钮:
如果您真的想要一个全屏对话框,只需扩展 Dialog
class 并添加一些调整。 (你也可以在不扩展任何东西的情况下完成这个,但我想你可能想把所有东西都放在一个地方)
在你的构造函数中你需要设置样式(为了你的 material 外观,或者它可以是一个空的样式标签):
super(context, R.style.DialogStyle);
您还需要设置视图:(这是您定义 where/what 这两个按钮的地方)
setContentView(R.layout.dialog_view);
最后,您可能还需要修改 windows 布局参数:
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();
我同意使用新的activity。将 HomeAsUp 指示器设置为您想要的任何值,然后保存按钮可以是设置为显示 ifRoom 的单个菜单项。
http://developer.android.com/reference/android/app/ActionBar.html#setHomeAsUpIndicator(int)
android:showAsAction=["ifRoom" | "never" | "withText" | "always" | "collapseActionView"]
这是我用来显示没有操作栏的全屏对话框的方法:
//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);
}