[Digging] Android Translucent StatusBar 2

cover2

接上篇:[Digging] Android Translucent Status Bar,CollapsingToolbarLayout简化使用的同时,也带来了麻烦,针对状态栏透明,支持也不够完美。

上篇的Demo,没有包含CollapsingToolbarLayout当titleEnable设置为true时的情况。当titleEnable设置为true时,CollapsingToolbarLayout会向Toolbar内插入一个辅助用的mDummyView,这个View用来辅助计算展开是Title的位置。但是也带来了麻烦:

  1. Toolbar的高度不能正确计算。
  2. fitsSystemWindows属性响应异常。
  3. AppBarLayout滚动范围异常。

影响还是挺多的,不过知道问题就可以处理了。我的解决方法是继承Toolbar,修改DummyView的LayoutParams,将其高度设置成Toolbar的最小高度,完美解决。

1
2
3
4
5
6
7
8
9
10
@Override
public void addView(View child, int width, int height) {
if (View.class.isInstance(child)) {
mDummyView = child;
if (height == ViewGroup.LayoutParams.MATCH_PARENT) {
height = getSuggestedMinimumHeight();
}
}
super.addView(child, width, height);
}

这也只是一个Trick,如果你有更好的方案,也欢迎告诉我。

Demo源码:Github