Я бы посмотрел математический поток метода offsetChildAsNeeded
в AppBarLayout.ScrollingViewBehavior при запуске изменений прокрутки.Как работает математика AppBarLayout.ScrollingViewBehavior?
Как частный метод и частный mOffsetDelta
, как их программно контролировать?
(Это не ясно, каким образом метод использует offset
тоже.)
private void offsetChildAsNeeded(CoordinatorLayout parent, View child, View dependency) {
final CoordinatorLayout.Behavior behavior =
((CoordinatorLayout.LayoutParams) dependency.getLayoutParams()).getBehavior();
if (behavior instanceof Behavior) {
// Offset the child, pinning it to the bottom the header-dependency, maintaining
// any vertical gap, and overlap
final Behavior ablBehavior = (Behavior) behavior;
final int offset = ablBehavior.getTopBottomOffsetForScrollingSibling();
ViewCompat.offsetTopAndBottom(child, (dependency.getBottom() - child.getTop())
+ ablBehavior.mOffsetDelta
+ getVerticalLayoutGap()
- getOverlapPixelsForOffset(dependency));
}
}
Примечание: приветствуются и могут быть приняты ответы и те, которые объясняют подробности о логике МАТЕМАТИКА о getTopBottomOffsetForScrollingSibling()
, из (dependency.getBottom() - child.getTop())
, и по содержанию mOffsetDelta
Было бы лучше, если бы вы объяснили свою конечную цель, а не то, как вы планируете ее достичь. – natario
Конечная цель - узнать, как работает поведение при изменении прокрутки. – GPack
Скопируйте 'AppBarLayout.ScrollingViewBehavior' в ваш проект, внесите изменения, укажите его приложение AppBarLayout 'app: layout_behavior', прибыль. –