0

PIC1羽織る

enter image description here

エリア1がAppBarLayout、ViewPager(リサイクル図)であるがAppBarLayout未満です。

Area2に触れてゆっくりとスクロールアップすると、正常に動作します。 しかしArea1に触れて素早く上にスクロールすると、ビューが上にスクロールして自動的に下にスクロールすることがあります。

サポート:26.0.2(26.1.0/27.0.2)

は、ここに私のレイアウトです:私が代わりに26.0.2のサポート23.4.0を使用

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <android.support.design.widget.AppBarLayout 
     android:id="@+id/app_bar_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@null" 
     app:elevation="0dp"> 
     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="350dp" 
      android:background="@android:color/holo_green_light" 
      android:gravity="center" 
      android:text="TEST" 
      android:textColor="@android:color/holo_orange_dark" 
      android:textSize="64sp" 
      app:layout_scrollFlags="scroll|enterAlways"/> 
     <!--category--> 
     <android.support.design.widget.TabLayout 
      android:id="@+id/tabs" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="?attr/colorPrimary" 
      app:tabIndicatorColor="@color/colorAccent" 
      app:tabIndicatorHeight="4dp" 
      app:tabSelectedTextColor="#000" 
      app:tabTextColor="#fff"/> 
    </android.support.design.widget.AppBarLayout> 
    <android.support.v4.view.ViewPager 
     android:id="@+id/pager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@android:color/white" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"/> 
</android.support.design.widget.CoordinatorLayout> 

、レイアウトは細かいスクロールします。 アプリケーションバーは/ NestedScrollView(又はRecyclerView)しながら、まだ投げつけ終了していない投げ飛ばさスクロールされたとき

答えて

0

これが起こっています。

ソリューションは:アプリケーションバーのデフォルトの動作を拡張し、AppBar.BehaviorのonNestedPreScrollの呼び出しをブロックする()onNestedScroll()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