android-工具栏不会以Scrollview折叠为CoordinatorLayou的子级

我正在尝试使用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>
5个解决方案
135 votes

ScrollViewCoordinatorLayout不配合。您必须使用NestedScrollView而不是ScrollView

TheoK answered 2019-10-09T19:16:25Z
35 votes

使用NestedScrollView将滚动视图折叠为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>
Anupriya answered 2019-10-09T19:16:50Z
7 votes

您可以保留ScrollView并添加以下XML属性:android:nestedScrollingEnabled="true",以便将CoordinatorLayout视为同级,并且请记住,只有棒棒糖版本及更高版本才支持此属性。

Bachiri Taoufiq Abderrahman answered 2019-10-09T19:17:15Z
2 votes

使用NestedScrollView时,请使用android:minHeight="1000dp" 而不是常规的android:minHeight="1000dp"

要使android:minHeight="1000dp" 滚动,您可以触发滚动   通过设置子项的最小高度来行为   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]

TouchBoarder answered 2019-10-09T19:18:01Z
1 votes

实际答案应该是CoordinatorLayoutScrollView不兼容,因为ScrollView没有实现NestedScrollingChild接口。 NestedScrollView是具有NestedScrollingChild实现的ScrollView。 如果您想了解有关嵌套滚动的更多信息,请写一篇博客文章。

Grzegorz Gajewski answered 2019-10-09T19:18:28Z
translate from https://stackoverflow.com:/questions/30645986/toolbar-will-not-collapse-with-scrollview-as-child-of-coordinatorlayout