Это происходит только тогда, когда AppBar
прокручивается / отбрасывается, а NestedScrollView
(или RecyclerView
) еще не закончил бросок.
Решение. Расширьте Behavior
_ по умолчанию для AppBar и заблокируйте вызов onNestedPreScroll()
и onNestedScroll()
для AppBar.Behavior при касании AppBar
, пока NestedScroll еще не остановился.
@Override
public void onNestedPreScroll(CoordinatorLayout coordinatorLayout, AppBarLayout child, View target, int dx, int dy, int[] consumed, int type) {
if (type == TYPE_FLING) {
isFlinging = true;
}
if (!shouldBlockNestedScroll) {
super.onNestedPreScroll(coordinatorLayout, child, target, dx, dy, consumed, type);
}
}
@Override
public void onNestedScroll(CoordinatorLayout coordinatorLayout, AppBarLayout child, View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed, int type) {
if (!shouldBlockNestedScroll) {
super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed, type);
}
}
затем используйте его в макете:
<android.support.design.widget.AppBarLayout
android:id="@+id/app_bar"
...
app:layout_behavior="com.mypackage.NoBounceBehavior"/>
Ссылку для полного кода настраиваемого поведения можно найти здесь: https://gist.github.com/ampatron/9d56ea401094f67196f407f82f14551a
person
vida
schedule
15.11.2017