有没有办法让我的Dialog视图全屏显示,即对话框占据整个屏幕(如活动)。我尝试使用LayoutParams和样式
<item name="android:windowFullscreen">true</item>
但似乎没有任何效果。
我找到了摆脱标题栏的方法,但找不到将对话框全屏显示的方法。所以任何人都可以建议我这样做。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MyTheme" parent="@android:style/Theme.Dialog">
<item name="android:windowFullscreen">true</item>
<item name="android:windowFrame">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowBackground">@color/dialog_background</item>
</style>
</resources>
答案 0 :(得分:89)
为其构造函数指定一个非对话框主题,例如 android.R.style.Theme 或 android.R.style.Theme_Light 。
@Bob编码。
Dialog dialog = new Dialog(context, android.R.style.Theme_Light);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.MyCustomDialogLayout);
dialog.show();
答案 1 :(得分:31)
以下代码适用于我的情况:
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.mydialog2);
dialog.getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
答案 2 :(得分:17)
试试这个
dialog = new Dialog(context,android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
答案 3 :(得分:2)
1.自定义对话框样式
<style name = "MyDialog" >
<item name="android:windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name = "android:windowContentOverlay" >@null</item >
<item name = "android:colorBackgroundCacheHint" >@null</item >
<item name = "android:backgroundDimEnabled">true</item>
<item name = "android:windowBackground" >@android:color/transparent</item >
</style >
2:自定义对话框
WindowManager wm = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);
int width = wm.getDefaultDisplay().getWidth();
int height = wm.getDefaultDisplay().getHeight();
final Dialog dialog = new Dialog(this, R.style.MyDialog);
View view = LayoutInflater.from(this).inflate(R.layout.layout_dialog, null);
WindowManager.LayoutParams params = dialog.getWindow().getAttributes();
params.width = WindowManager.LayoutParams.MATCH_PARENT;
params.height = WindowManager.LayoutParams.WRAP_CONTENT;
dialog.setContentView(view);
dialog.getWindow().setGravity(Gravity.BOTTOM);
dialog.getWindow().setWindowAnimations(R.style.mydialog_Style);
dialog.show();
答案 4 :(得分:1)
答案对我不起作用(sdk 21,samsung galaxy s5)。在搜索和测试之后,我发现设置全屏对话框的关键点是对话框样式中的<item name="android:windowIsFloating">false</item>
。 sdk中的大多数Dialog风格都是真的!在样式中将其设置为false并在
AlertDialog.Builder = new AlertDialog.Builder(getActivity(), R.style.YourStyle);
你的风格可能看起来像
<style name="YourStyle">
<item name="android:windowIsFloating">false</item>
...
</style>
设置为false后,应为全屏。而且,您可以使用
dialog.getWindow.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT);
将它的高度设置为wrap_content。 希望能帮助别人。
答案 5 :(得分:1)
尝试将dialog_custom_layout.xml
打包到RelativeLayout
。这对我有用。
答案 6 :(得分:1)
对于全屏对话框,您应该扩展DialogFragment
它将提供Fragment
生命周期方法,这是Android开发人员文档中推荐的方法,您可以使用简单的Dialog
或{{1}也是。
当你创建对话框实例时,只需使用AlertDialog
主题和上下文:
android.R.style.Theme_Black_NoTitleBar_Fullscreen
或
Dialog dialog = new Dialog(getActivity(), android.R.style.Theme_Black_NoTitleBar_Fullscreen);
这将全屏显示对话框。
答案 7 :(得分:0)
试试这段代码
protected void openDialog() {
Dialog dialog = new Dialog(this);
dialog.addContentView(new View(this), (new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT)));
dialog.show();
}
答案 8 :(得分:0)
我正在使用带对话主题的活动。在这种情况下,全屏以这种方式工作:
int mUIFlag = View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().getDecorView().setSystemUiVisibility(mUIFlag);
getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
setContentView(R.layout.lockscreen_activity);
}
答案 9 :(得分:0)
将自定义对话框设置为
Dialog dialog = new Dialog(context, android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
答案 10 :(得分:0)
以下是创建具有自定义布局的全屏对话框的步骤,该对话框占据了整个屏幕,而每个站点都没有填充。
步骤1:定义名为layout_fullscreen_dialog.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimary">
<!-- Your dialog content here -->
</LinearLayout>
步骤2:在styles.xml
中定义名为FullScreenDialog
的新样式
<style name="FullScreenDialog" parent="Theme.AppCompat.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
</style>
步骤3:编写一种创建并显示对话框的方法
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
createAndShowDialog(this);
}
// This method used to create and show a full screen dialog with custom layout.
public void createAndShowDialog(Context context) {
Dialog dialog = new Dialog(context, R.style.FullScreenDialog);
dialog.setContentView(R.layout.layout_fullscreen_dialog);
WindowManager.LayoutParams layoutParams = dialog.getWindow().getAttributes();
dialog.getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
dialog.getWindow().setAttributes(layoutParams);
dialog.show();
}
}