当前位置: 代码迷 >> Android >> CollapsingToolbarLayout exitUntilCollapsed 导致 NestedScrollView 出现布局问题
  详细解决方案

CollapsingToolbarLayout exitUntilCollapsed 导致 NestedScrollView 出现布局问题

热度:103   发布时间:2023-08-04 10:16:19.0

我在片段中有一个简单的折叠工具栏,它位于带有 tablayout 的 viewpager 中:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/main_content"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="false"
    tools:context=".MainActivity">


     <android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="192dp"
        android:fitsSystemWindows="true"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/collapsing_toolbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fitsSystemWindows="true"
            app:expandedTitleMarginBottom="80dp"
            app:expandedTitleMarginEnd="64dp"
            app:expandedTitleMarginStart="48dp"
            app:layout_scrollFlags="scroll|exitUntilCollapsed"
            android:background="@color/red">

            <android.support.v7.widget.Toolbar
                android:id="@+id/anim_toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:layout_collapseMode="pin"
                app:layout_scrollFlags="scroll|enterAlways"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
        </android.support.design.widget.CollapsingToolbarLayout>
    </android.support.design.widget.AppBarLayout>


    <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">


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

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

当我的片段第一次加载时一切正常,但是在选项卡之间交换后重新显示片段时,我无法再滚动到 NestedScrollView 的最底部。 我的内容缺失部分与工具栏高度相同(更改工具栏高度会更改缺失部分高度)。

这是未滚动的视图:

滚动到底部时,有一个部分未显示,在本例中,还有另一个“Text 6”TextView 位于屏幕外且无法访问。

在某些选项卡上(我有 6 个),我永远无法访问缺少的部分,在其他选项卡上,它遵循以下模式:

  1. 可以滚动到底部
  2. 更改选项卡并再次返回
  3. 无法滚动到底部
  4. 更改多个选项卡以便片段被杀死
  5. 再次选择选项卡时,片段会重新膨胀
  6. 可以滚动到底部

任何帮助,将不胜感激。

尝试这些更改。 看看差异。

<android.support.design.widget.AppBarLayout
    android:layout_height="192dp"
    android:fitsSystemWindows="true">

    <android.support.design.widget.CollapsingToolbarLayout

        android:layout_height="wrap_content"
        android:fitsSystemWindows="true">

        <android.support.v7.widget.Toolbar
            android:layout_height="?attr/actionBarSize"/>

    </android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>


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

    <LinearLayout
        android:layout_height="match_parent">
    </LinearLayout>

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

你有没有打电话给setSupportActionBar(your_anim_toolbar)
确保您的代码中有这一行,并且必须Activity#setContentView (或Fragment#onCreateView )添加它。

供大家参考,因为我刚刚遇到了同样的问题。 这是一个已知问题,已在 com.google.android.material:material:1.3.0-alpha04 中修复

也与