当AppBar折叠/展开时如何将工具栏固定在顶部?

Abh*_*hek 25 android material-design android-appbarlayout

概观

我正在尝试实现一种滚动技术,具有重叠内容的灵活空间,在Material Design中有所描述.

灵活的空间,内容重叠

内容可以与应用栏重叠.

行为:

应用栏的起始位置应位于内容后面.向上滚动时,应用栏应滚动得比内容更快,直到内容不再重叠.一旦锚定到位,应用栏就会抬起以允许内容在下方滚动.

https://www.google.co.in/design/spec/patterns/scrolling-techniques.html#scrolling-techniques-scrolling


问题

但问题是,我的AppBar中的标题在展开时向下滚动并隐藏在重叠内容之下.

在这里,我的工具栏隐藏在重叠的CardView下方. 当appbar扩展时

折叠appbar时,工具栏以及标题从下方向上滑动. 崩溃时

这是我的代码:

活动的main.xml中

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

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <android.support.design.widget.CollapsingToolbarLayout
            ...
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:layout_gravity="top"
                android:background="?attr/colorPrimary"
                app:layout_collapseMode="pin"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
                app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />
        </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"
        ...
Run Code Online (Sandbox Code Playgroud)

我还在MainActivity的onCreate函数中添加了这些

    setSupportActionBar(toolbar);

    collapsingToolbarLayout.setTitle("App Name");
Run Code Online (Sandbox Code Playgroud)

我希望工具栏(包含瓷砖和其他内容,稍后我将添加)保持在顶部,无论appbar是否被展开或折叠.

我已经阅读了文档,经历了很多帖子和教程,观看了很多视频,但却找不到工作解决方案或任何相关的解决方案.

如果有人对如何解决这个问题有所了解,请提出建议.谢谢你的帮助.

小智 67

当我在类似问题报告的评论中找到答案时,我一直在寻找解决方案.

基本上你打电话setTitleEnabled()给你CollapsingToolbarLayout这样:

CollapsingToolbarLayout.setTitleEnabled(false);
Run Code Online (Sandbox Code Playgroud)

您也可以在xml中执行此操作,方法是将其添加到您的CollapsingToolbarLayout:

app:titleEnabled="false"
Run Code Online (Sandbox Code Playgroud)

通过设置它false,您将获得所需的行为.标题保持固定在屏幕顶部.

Toolbar本身已经位于顶部,但是这使得标题也保持在那里,而不是在底部CollapsingToolbarLayout和底部之间进行翻译Toolbar.

  • 我尝试了这个,并且使用“titleEnabled = false”,标题保留在顶部,但一个奇怪的事情是,现在标题字符串始终是活动标签。在“CollapsingToolbarLayout”或“Toolbar”本身上调用“setTitle”没有任何效果。不知道这是否是预期的。 (2认同)

Sri*_*hem 5

我已经通过在Toolbar标签内添加以下代码来实现这一点。

app:layout_collapseMode="pin"
Run Code Online (Sandbox Code Playgroud)


CHa*_*ris 5

在我来说,我需要添加app:titleEnabled="false"CollapsingToolbarLayout AND app:layout_collapseMode="pin"android.support.v7.widget.Toolbar

现在,无论用户是向上还是向下滚动,工具栏都会固定在屏幕顶部。