是否可以以编程方式隐藏状态栏而不隐藏操作栏?
最终目标是隐藏状态栏及其内容,同时将屏幕上的其他内容保留在其位置,不用隐藏操作栏,然后在5秒后显示状态再次禁止同时保留所有其他内容。基本上,在屏幕顶部留下与状态栏大小相同的空白视图/空间。
我尝试过以下视图标记的各种组合:
private void maybeHideStatusBar() {
int flags = View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
persistSystemUiVisibility(mActivityWindow, flags);
}
persistSystemUiVisibility(...)
如下:
private static void persistSystemUiVisibility(final Window window, final int visibility) {
final View decorView = window.getDecorView();
decorView.setOnSystemUiVisibilityChangeListener(null);
decorView.setSystemUiVisibility(visibility);
decorView.setOnSystemUiVisibilityChangeListener(
new View.OnSystemUiVisibilityChangeListener() {
@Override
public void onSystemUiVisibilityChange(int newVisibility) {
if (newVisibility != visibility) {
persistSystemUiVisibility(window, visibility);
}
}
});
}
但是,实际隐藏状态栏及其内容的最重要的窗口标志View.SYSTEM_UI_FLAG_FULLSCREEN
也会强制隐藏操作栏。有没有办法覆盖这个默认的操作栏行为?
所有这些都需要在活动创建后setContentView
发生,因此requestWindowFeature(Window.FEATURE_ACTION_BAR)
无法正常工作。
任何帮助都会非常赞赏,谢谢! :)