" FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS"影响getRootView()。getHeight()

时间:2015-03-31 15:14:20

标签: android relativelayout android-5.0-lollipop nexus-5

我在尝试向状态栏添加颜色时发现了影响相对布局高度的问题。

adding Flag影响了相对布局rootView的高度。

private void changeStatusBarColor(){
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            Window window = getWindow();
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
            window.setStatusBarColor(getResources().getColor(R.color.red_e31837));
        }
    }

我有一个视图树观察器,可以帮助我跟踪rootView的高度。

private ViewTreeObserver.OnGlobalLayoutListener keyboardLayoutListener = new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {

            int heightDiff = wrapper.getRootView().getHeight() - wrapper.getHeight();
}
如果我使用int heightDiff

FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS等于1920,但如果我不使用changeStatusBarColor(),则int heightDiff等于1776(我估计没有操作栏和状态栏计算)。 但为什么添加此标志会改变计算? 提前谢谢!

1 个答案:

答案 0 :(得分:3)

就我而言,SlidingMenu库中出现了问题。这是solution