9

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

添加影响相对布局根视图高度计算的标志。

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(我猜是在没有操作栏和状态栏的情况下计算)。但是为什么要添加这个标志改变计算呢?提前致谢!

4

1 回答 1

3

就我而言,SlidingMenu 库中出现了问题。这是一个解决方案

于 2015-07-07T10:56:48.997 回答