У меня есть AppBarLayout с CollapsingToolbarLayout, двумя представлениями ниже и ViewPager на остальной части экрана
<Coordinator>
<AppBarLayout>
// Toolbar stuff inside
<CollapsingToolbarLayout app:layout_scrollFlags="scroll|exitUntilCollapsed"/>
// Should collapse by design
<FirstButtonView app:layout_scrollFlags="scroll" />
<TabLayout app:layout_scrollFlags="scroll|exitUntilCollapsed">
</AppBarLayout>
<ViewPager app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
</Coordinator>
С этим макетом, как и ожидалось, свернутая панель инструментов, но оба представления закреплены наверху
Как я вижу в классе AppBarLayout, когда он вычисляет возможную прокрутку, он перебирает дочерние представления, пока не встретится флаг SCROLL_FLAG_EXIT_UNTIL_COLLAPSED = 2, а затем прерывает цикл
public final int getTotalScrollRange() {
if (this.totalScrollRange != -1) {
return this.totalScrollRange;
} else {
int range = 0;
int i = 0;
for(int z = this.getChildCount(); i < z; ++i) {
View child = this.getChildAt(i);
AppBarLayout.LayoutParams lp = (AppBarLayout.LayoutParams)child.getLayoutParams();
int childHeight = child.getMeasuredHeight();
int flags = lp.scrollFlags;
if ((flags & 1) == 0) {
break;
}
range += childHeight + lp.topMargin + lp.bottomMargin;
if ((flags & 2) != 0) {
range -= ViewCompat.getMinimumHeight(child);
break;
}
}
return this.totalScrollRange = Math.max(0, range - this.getTopInset());
}
}
Возможно ли как-то это решить? Целевой дизайн