我在尝试向状态栏添加颜色时发现了一个影响相对布局高度的问题。
添加影响相对布局根视图高度计算的标志。
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(我猜是在没有操作栏和状态栏的情况下计算)。但是为什么要添加这个标志改变计算呢?提前致谢!