1

スクロール時にツールバーを折りたたむ/展開するために、AppBarLayoutを使用してCoordinatorLayoutを作成しました。コンテンツビューはRecyclerViews(水平方向にスクロールする)とスクロールビューのない他のビューを持つNestedScrollViewです。 Airbnbアプリによく似ています。NestedScrollViewと水平スクロールRecyclerViewを使用したCoordinatorLayout

<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:layout_width="match_parent" 
     android:layout_height="wrap_content"> 
     <include layout="@layout/toolbar_flat" /> 
    </android.support.design.widget.AppBarLayout> 

    <android.support.v4.widget.NestedScrollView 
      android:id="@+id/newstedScrollView" 
      app:layout_behavior="@string/appbar_scrolling_view_behavior" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 
       <LinearLayout 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:background="@color/consistentGreyWhite" 
        android:paddingBottom="@dimen/activity_vertical_margin" 
        android:clipToPadding="false" 
        android:orientation="vertical"> 

        <android.support.v7.widget.RecyclerView 
         android:id="@+id/home_slider" 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:background="@color/consistentWhite" 
         android:clipToPadding="false" 
         android:paddingBottom="@dimen/activity_vertical_margin" 
         android:paddingLeft="14dp" 
         android:paddingRight="14dp" 
         android:paddingTop="@dimen/activity_vertical_margin" 
         /> 

        <... other elements ...> 

      </LinearLayout> 
    </android.support.v4.widget.NestedScrollView> 

</android.support.design.widget.CoordinatorLayout> 

スクロールビューのない要素をスクロールすると、ツールバーの折りたたみ/展開が機能します。しかし、RecyclerViewでスクロール(垂直)を実行すると、ツールバーが期待通りに機能しません。 RecyclerViewsがスクロールイベントをCoordinatorLayoutに渡さないようです。

+0

私の答えを試してください。 –

答えて

4

私もこの問題を抱えていました。

はあなたのフラグメントまたは活性の各recyclerViewオブジェクトに対して次の操作を行い、また、あなたのNestedScrollViewタグ

app:layout_behavior="@string/appbar_scrolling_view_behavior" 

にこのプロパティを追加します。また、あなたのアダプタでは、あなたはrecycler_views 'を入れ子にしています。

+2

ありがとうsetNestedScrollingEnabled私のためにそれをしました。 – Botz

0

Recycler Viewにこのプロパティを追加します。

app:layout_behavior="@string/appbar_scrolling_view_behavior" 

Recycler Viewにも追加できます。

mRecyclerView.setNestedScrollingEnabled(false); 

このようにします。 android:fillViewport="true"NestedScrollViewについても同じこと

<android.support.v7.widget.RecyclerView 
    android:id="@+id/home_slider" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 

android:fillViewport="true"を使用すると、NestedScrollViewRecyclerViewとなります。

<android.support.v4.widget.NestedScrollView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fillViewport="true" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior"> 
+0

は私のために働いていません... – Botz

+0

@Botzもしあなたがどこかに助けてくれたら、その答えを感謝してください:)。 –

関連する問題