“FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS”影响getRootView()。getHeight()

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

添加标志影响的相对布局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等于1920如果我使用FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS但如果我不使用changeStatusBarColor()int heightDiff等于1776(计算没有操作栏和状态栏,我猜)。 但为什么添加这个标志改变了计算? 提前致谢!

Related of "“FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS”影响getRootView()。getHeight()"

在我的情况下,问题发生在SlidingMenu库。 这是一个解决scheme 。