显示/隐藏UI时全屏活动不稳定

时间:2018-11-03 20:12:17

标签: android fullscreen

我正在尝试创建一个ViewPager,其中包含一些UI元素,这些元素可按需显示/隐藏电子阅读器类型的应用程序。我遇到的问题是ViewPager的尺寸会根据系统UI是否显示而变化。我看了很多示例,并尝试了许多不同的实现,但是我无法让ViewPager忽略系统UI的更改。我可以实施解决方法,但我希望有人知道我在做什么错。

我的布局(简体):
    <FrameLayout> <ViewPager/> <FrameLayout ... android:fitsSystemWindows="true"> <ConstraintLayout> <include layout="@layout/app_bar"/> <include layout="@layout/bottom_bar"/> <FloatingActionButton ... /> ... </ConstraintLayout> </FrameLayout> </FrameLayout>

我的活动(简体):

public class BookActivity {
    protected void onCreate(...) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.book_activity);
        ...
        viewPager.getViewTreeObserver().addOnGlobalLayoutListener(new 
            ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {              
viewPager.getViewTreeObserver().removeOnGlobalLayoutListener(this);
                //do something with viewpager
                //viewpager dimensions should stay the same regardless of system ui status
            }
        });
        //hide the system ui on start
        hideSystemUI();
    }

    private void hideSystemUI() {
         View decorView = getWindow().getDecorView();
         decorView.setSystemUiVisibility(
                 View.SYSTEM_UI_FLAG_IMMERSIVE
                    // Set the content to appear under the system bars so that the
                    // content doesn't resize when the system bars hide and show.
                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    // Hide the nav bar and status bar
                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_LOW_PROFILE);
    }
    private void showSystemUI() {
         View decorView = getWindow().getDecorView();
         decorView.setSystemUiVisibility(
                 View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_LOW_PROFILE);
    }
}

在恢复系统用户界面后,ViewPager的尺寸会缩小高度。 我以为SYSTEM_UI_FLAG_LAYOUT_STABLESYSTEM_UI_FLAG_LAYOUT_FULLSCREEN应该阻止这种情况。

0 个答案:

没有答案