在我XML
的{{1}}中,我对其进行了编程,以便使用主题为MainActivity
,因此没有显示操作栏。但是,每当我想显示一个对话框时,我都会调用NoActionBar
之一使用DialogFragments
来创建对话框。当我在主活动中显示对话框时,它会显示带有AlertDialog.Builder
的对话框。 当我关闭对话框时,操作栏仍然。
问题:当片段消失或者首先没有显示时,如何保持一致性并隐藏操作栏?
我尝试创建自定义样式,然后将其包装在ActionBar
中无效。
ContextThemeWrapper
和getActionBar().hide()
在主活动和片段上都返回null。
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()
中。欢呼声。
答案 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
希望它有所帮助!