在我的 MainActivity
的 XML
中,我对其进行了编程,以便它使用一个带有 NoActionBar
的主题因此没有显示操作栏。但是,每当我想显示一个对话框时,我都会调用一个使用 AlertDialog.Builder
的 DialogFragments
来创建对话框。当我从主要 Activity 中显示对话框时,它会显示带有 ActionBar
的对话框。 当我随后关闭对话框时,操作栏仍然存在。
问题:如何保持一致性并在 fragment 消失时隐藏操作栏,或者让它首先不显示?
我曾尝试创建自定义样式,然后将其包装在 ContextThemeWrapper
中,但无济于事。
getActionBar().hide()
和 getSupportActionBar().hide()
在主 Activity 和 fragment 上都返回 null。
myDialog.getDialog()
(在调用 .show()
之前)返回 null
。
我用来创建 AlertDialog.Builder
的代码在 DialogFragment
的 onCreateDialog
中:
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();
编辑:
4 个月后回到这个问题,修复是在对话框的 onCreate()
中添加以下行:
this.getActivity().getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
Fragment 的onCreate()
被覆盖写在MainActivity
中。干杯。
最佳答案
对于 API 级别 17 及更高版本,请参阅 gprathour 的回答。
对于 API 级别 16 及更低级别,需要将以下行添加到我的对话框的 onCreate()
this.getActivity().getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
关于android - 使用 AlertDialog.Builder 时防止 StatusBar 显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36554599/