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

时间:2015-08-18 05:16:16

标签: android material-design android-appbarlayout

概述

我正在尝试实施其中一个Scrolling Techniques灵活空间,内容重叠,在Material Design中有所描述。

  

内容重叠的灵活空间

     

内容可以与应用栏重叠。

     

行为:

     

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

     

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

问题

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

在这里,我的工具栏隐藏在重叠的CardView下方。 When appbar expanded

当折叠appbar时,工具栏以及标题从下方向上滑动。 When collapsed

代码

这是我的代码:

活性-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"
        ...

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

    setSupportActionBar(toolbar);

    collapsingToolbarLayout.setTitle("App Name");

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

我已经阅读过这些文档,经历了很多帖子和教程,观看过很多视频但却未能找到可行的解决方案或任何相关的解决方案。

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

4 个答案:

答案 0 :(得分:61)

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

基本上,您在System.out.printf("%4d", 1 << (j - 1)); 上拨打setTitleEnabled(),就像这样:

CollapsingToolbarLayout

您也可以在xml中执行此操作,方法是将其添加到CollapsingToolbarLayout.setTitleEnabled(false);

CollapsingToolbarLayout

通过将其设置为app:titleEnabled="false" ,您将获得所需的行为。标题保持固定在屏幕顶部。

false本身实际上已经位于顶部,但这也使标题保持在那里,而不是在ToolbarCollapsingToolbarLayout的底部之间进行翻译。

答案 1 :(得分:4)

我通过在Toolbar标记内添加以下代码来实现此目的。

app:layout_collapseMode="pin"

答案 2 :(得分:3)

在我的情况下,我需要将app:titleEnabled="false"添加到CollapsingToolbarLayout app:layout_collapseMode="pin" android.support.v7.widget.Toolbar

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

答案 3 :(得分:0)

要保持标题排行,只需将此属性添加到您的CollapsingToolbarLayout

app:expandedTitleGravity="top"