2016-11-22 11 views
6

CollapsingToolbarLayout/AppBarLayoutのスクロール/タッチイベントがnestedscrollviewで発生した場合のみ(これは動作しています)、CollapsingToolbarLayout/AppBarLayoutを直接スクロールしようとした場合それは動作しません。スクロール/タッチイベントが私のrecyclerviewスクロールイベントを乱しているので、これが必要です。CollapsingToolbarLayout/AppBarLayoutの垂直スクロールを無効にする

私はこのような構造を持っている:私はonTouchを(上書きしようとした

CoordinatorLayout 

-- AppBarLayout 

---- CollapsingToolbarLayout (scrollflags: scroll, exitUntilCollapsed, snap) 

------ Toolbar (CollapseMode: pin) 

------ RecyclerView (Horizontal, CollapseMode: pin) 

----- /CollapsingToolbarLayout 

-- /AppBarLayout 

-- NestedScrollView (Behaviour: appbar_scrolling_view_behavior) 

-- /NestedScrollView 

/CoordinatorLayout 

)とonInterceptTouchEvent()の両方CollapsingToolbarLayout/AppBarLayoutのためのそれは、タッチイベント/スクロールを傍受し続けます。

答えて

13

[OK]を私はこれのための解決策を見つけました。

AppBarLayoutビヘイビアでonDrag()メソッドをオーバーライドするだけで、タッチがAppBarLayoutビューの上に表示された場合、スクロールしないようにする必要があります。ここから

CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) appBarLayout.getLayoutParams(); 
AppBarLayout.Behavior behavior = (AppBarLayout.Behavior) params.getBehavior(); 
behavior.setDragCallback(new AppBarLayout.Behavior.DragCallback() { 
    @Override 
    public boolean canDrag(@NonNull AppBarLayout appBarLayout) { 
     return false; 
    } 
}); 

ソリューション: How to disable scrolling of AppBarLayout in CoordinatorLayout?

あなたがあるため、ヌル行動のNullPointerExceptionが発生した場合は、あなたが最初のものを割り当てる必要があります。

CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) mAppbar.getLayoutParams(); 
params.setBehavior(new AppBarLayout.Behavior()); 
+0

ありがとうございました。これはうまくいきますが、向きの変更にはまだ問題があります。これもあなたが見るものですか? –

+0

ありがとうございます! 10000000ありがとう!!!!これは本当に動作します!!!! ))))))) – maXp

関連する問題