web-dev-qa-db-ja.com

CoordinatorLayoutの子としてのScrollviewでツールバーは折りたたまれません

CoordinatorLayoutの使用に関してGoogleドキュメントを追おうとしていますが、CoordinatorLayout内のScrollViewに問題があります。基本的に、ツールバーは通常、下にスクロールするとRecyclerViewまたはListviewで折りたたまれます。 ScrollViewを使用すると、折りたたまれません。

<Android.support.design.widget.CoordinatorLayout
    Android:layout_width="match_parent"
    Android:layout_height="match_parent">

    <ScrollView
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        >

        <TextView
            Android:id="@+id/tv_View"
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            Android:layout_gravity="center"
            Android:gravity="center"
            Android:text="@string/filler"
            style="@style/TextAppearance.AppCompat.Large"
            />

    </ScrollView>

    <Android.support.design.widget.AppBarLayout
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        >
        <Android.support.v7.widget.Toolbar
            Android:id="@+id/toolbar"
            Android:layout_width="match_parent"
            Android:layout_height="?attr/actionBarSize"
            app:layout_scrollFlags="scroll|enterAlways"
            />

    </Android.support.design.widget.AppBarLayout>

    </Android.support.design.widget.CoordinatorLayout>
59
AmaJayJB

ScrollViewCoordinatorLayoutと連携しません。 NestedScrollViewの代わりにScrollViewを使用する必要があります

140
TheoK

NestedScrollViewを使用して、ScrollviewをCoordinator Layoutの子として折りたたみます。コードを次のコードに置き換えます。

<Android.support.design.widget.CoordinatorLayout
    Android:layout_width="match_parent"
    Android:layout_height="match_parent">

    <Android.support.v4.widget.NestedScrollView
        Android:layout_width="match_parent"
                 Android:layout_height="match_parent"
                 app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <LinearLayout
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            Android:orientation="vertical">

        <TextView
            Android:id="@+id/tv_View"
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            Android:layout_gravity="center"
            Android:gravity="center"
            Android:text="@string/filler"
            style="@style/TextAppearance.AppCompat.Large"
            />

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

    <Android.support.design.widget.AppBarLayout
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        >
        <Android.support.v7.widget.Toolbar
            Android:id="@+id/toolbar"
            Android:layout_width="match_parent"
            Android:layout_height="?attr/actionBarSize"
            app:layout_scrollFlags="scroll|enterAlways"
            />

    </Android.support.design.widget.AppBarLayout>

    </Android.support.design.widget.CoordinatorLayout>
36
Anupriya

ScrollViewを保持し、次のXMLプロパティを追加できます:Android:nestedScrollingEnabled="true"したがって、CoordinatorLayoutを兄弟として認識し、このプロパティはLollipop version and aboveでのみサポートされることに留意してください。

NestedScrollViewを使用する場合、通常のScrollViewの代わりにCoordinatorLayoutを使用します。

CollapsingToolbarLayoutをスクロールするには、NestedScrollViewの子レイアウトの最小の高さを* 1000dpに設定することでスクロール動作をトリガーできます。

Android:minHeight="1000dp"

レイアウト:

<Android.support.v4.widget.NestedScrollView
app:layout_behavior="@string/appbar_scrolling_view_behavior">

    <!--to trigger scroll behavior-->
    <LinearLayout Android:minHeight="1000dp"/>

</Android.support.v4.widget.NestedScrollView>

*ここにSupportDesignDemosの例: https://github.com/Android/platform_development/blob/master/samples/SupportDesignDemos/res/layout/include_appbar_scrollview.xml

2
TouchBoarder

実際の答えは、CoordinatorLayoutNestedScrollingChild インターフェイスを実装していないため、ScrollViewScrollViewでは機能しないということです。 NestedScrollViewは、ScrollViewを実装したNestedScrollingChildです。ネストされたスクロールについて詳しく知りたい場合は、 ブログ投稿 を作成しました。

1