我在尝试向状态栏添加颜色时发现了影响相对布局高度的问题。
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(我估计没有操作栏和状态栏计算)。
但为什么添加此标志会改变计算?
提前谢谢!