Android PageViewer - 隐藏特定碎片的状态栏

时间:2015-02-20 01:32:05

标签: android android-fragments android-viewpager statusbar

这是我第一次在这里发帖,所以我会尝试尽可能具体。

背景

我正在构建一个Android应用程序,我遇到了隐藏状态栏的问题。让我说明一下。我正在使用ViewPager允许用户在两​​个全屏页面之间滑动。每个页面都是唯一的Fragment。一个有现场摄像头,另一个有列表。我想要做的是隐藏相机片段顶部的状态栏,并在进入列表时向下滑动。这是SnapChat从相机片段到非相机片段时所做的事情。他们如何实现它是最终目标。

我的minSdkVersion是17,所以我可以使用Google在this Android training site上提供的这个代码段:

    View decorView = getWindow().getDecorView();
    // Hide the status bar.
    int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
    decorView.setSystemUiVisibility(uiOptions);

问题

这在隐藏和(通过一些更改)显示状态栏方面非常有效。但是,这会引入另一个问题,即状态栏曾经出现过空白空格。 Image here

我无法弄清楚如何让它消失。我认为需要调整布局以一直延伸到顶部,但我无法弄明白。

所以,

  1. 隐藏状态栏
  2. 时出现空格
  3. 改为使白色空间变黑。
  4. 代码

    来自我的PageChangeListener:

    public void onPageSelected(int position)
    {
        if (fragments[position] instanceof CameraPreviewFragment)
        {
            hideStatusBar();
        }
        else
        {
            showStatusBar();
        }
    }
    

    这两种方法:

    public void hideStatusBar()
    {
        View decorView = getWindow().getDecorView();
        // Hide the status bar.
        int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
        decorView.setSystemUiVisibility(uiOptions);
    }
    
    public void showStatusBar()
    {
        View decorView = getWindow().getDecorView();
        // Hide the status bar.
        int uiOptions = View.SYSTEM_UI_FLAG_VISIBLE;
        decorView.setSystemUiVisibility(uiOptions);
    }
    

    如果您需要更多代码或视图,我会编辑帖子以包含它们。欣赏它!

0 个答案:

没有答案