2017-11-07 12 views
1

遊びの際にAppbarに問題があった。スムーズにスクロールしていませんでした。Appbarでバウンス効果を削除するにはどうすればよいですか?

これらを参照してください:

をしかし、それはサポートライブラリのバージョンで修正されている26

compile 'com.android.support:design:26.0.0' 

しかし、逃げが難しくなくても、appbarは今や跳ね返っています。

enter image description here

どのように私は、この動作を削除しますか?

答えて

0

NestedScrollView(またはRecyclerView)がまだ羽ばたき終わっていない間にAppBarがスクロール/フローされた場合にのみ発生します。

ソリューション:アプリケーションバーのデフォルトBehaviorを拡張し、NestedScrollがまだ停止していないながらAppBarをタッチするとAppBar.BehaviorのonNestedPreScroll()onNestedScroll()のための呼び出しをブロックします。

<android.support.design.widget.AppBarLayout 
    android:id="@+id/app_bar" 
    ... 
    app:layout_behavior="com.mypackage.NoBounceBehavior"/> 

リファレンスカスタム動作の完全なコードのためにここで見つけることができます:https://gist.github.com/ampatron/9d56ea401094f67196f407f82f14551a

その後、レイアウト上でそれを使用するには

@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); 
    } 
} 

関連する問題