发件人/通知栏与自定义视图冲突?

时间:2009-12-21 18:02:24

标签: android android-orientation android-windowmanager

我的Android应用程序必须在某些时候切换到 landscape 模式,不使用发声器栏来显示占据完整显示高度和宽度的屏幕。我通过调用

来做到这一点
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)

并在传入“setFlags”的Window对象上调用“WindowManager.LayoutParams.FLAG_FULLSCREEN

当我返回人像模式并使用setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)

恢复发声器栏时

并设置标记“WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN”和“WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR”。

我的布局对象的原点(0,0)现在是下的启动器。因此,我的应用程序视图的前15个像素被发声器/单元信号/电池条覆盖。

有没有人见过这个问题?
是否有一个我错过的标志会恢复纵向/非全屏,而不会将我的应用程序推到顶部栏中?

1 个答案:

答案 0 :(得分:0)

只需找到上一篇文章Hiding Title in a Fullscreen mode?

的解决方案
private void updateFullscreenStatus(bUseFullscreen)
{   
   if(bUseFullscreen)
   {
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
        getWindow().clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR);
    }
    else
    {
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR);
        getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
    }

    m_contentView.requestLayout();
}