使用AlertDialog.Builder时,防止显示StatusBar

时间:2016-04-11 16:46:28

标签: android android-fragments

在我XML的{​​{1}}中,我对其进行了编程,以便使用主题为MainActivity,因此没有显示操作栏。但是,每当我想显示一个对话框时,我都会调用NoActionBar之一使用DialogFragments来创建对话框。当我在主活动中显示对话框时,它会显示带有AlertDialog.Builder的对话框。 当我关闭对话框时,操作栏仍然

问题:当片段消失或者首先没有显示时,如何保持一致性并隐藏操作栏?

我尝试创建自定义样式,然后将其包装在ActionBar中无效。

ContextThemeWrappergetActionBar().hide()在主活动和片段上都返回null。

MainActivity中的

getSupportActionBar().hide()(在调用myDialog.getDialog()之前)返回.show()

我用于创建null的代码位于AlertDialog.Builder' s DialogFragment内:

onCreateDialog

修改

4个月后再回到这个问题,修复是在对话框的AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setTitle(R.string.delete_confirmation) .setItems(fileSequence, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { File loadedFile = fileFullArray.get(which); boolean deleted = loadedFile.delete(); if (deleted) Toast.makeText(getActivity().getApplicationContext(), "File deleted!", Toast.LENGTH_SHORT).show(); } }) .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { // User cancelled the dialog } } ); // Create the AlertDialog object and return it return builder.create(); 中添加以下行:

onCreate()

片段this.getActivity().getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);被覆盖的内容写在onCreate()中。欢呼声。

4 个答案:

答案 0 :(得分:12)

需要将以下行添加到我的对话框onCreate()

this.getActivity().getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

答案 1 :(得分:1)

最新工作实例

接受的答案仅适用于API级别16或更低级别。 在较新版本中,AlertDialog执行以下操作:

if (Build.VERSION.SDK_INT < 16) {
    alert.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
} else {
    View decorView = alert.getWindow().getDecorView();
    int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
    decorView.setSystemUiVisibility(uiOptions);
}

答案 2 :(得分:0)

调用在对话框onCreate()上创建的此方法可以完全解决状态栏显示或显示/隐藏的问题。

private void hideStatusBar(Window window) {
    window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);
    window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | WindowManager.LayoutParams.FLAG_FULLSCREEN);
}

答案 3 :(得分:-1)

你应该在style.xml上使用

UuidFromString

它使您的活动没有<resources> <style name="AppTheme" parent="Theme.AppCompat.NoActionBar"> </style> </resources>

<强>更新:

我有一些代码,它应该对你有用!

ActionBar

<强> UPDATED2:

这里有ab = new AlertDialog.Builder(MainActivity.this, AlertDialog.THEME_DEVICE_DEFAULT_DARK); ab.setNeutralButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface arg0, int arg1) { } }); ab.setTitle(R.string.welcome_title); ab.setMessage(R.string.message); ab.create().show();

上的一些代码
Java

以及requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.main);

上的一些内容
XML

希望它有所帮助!