3

我正在使用 AppCompat-v21 的新工具栏。我想要做的是在用户开始向下滚动时隐藏操作栏,并在用户向上滚动时再次显示操作栏。它就像谷歌播放应用程序。我在工具栏下方也有一个选项卡布局,例如 google play 应用程序。那需要留在那里。

我尝试使用来自 google IO 应用程序的代码。但是它使工具栏消失,并且在工具栏消失时主要内容不会向上移动。工具栏之前的位置仍然存在空白空间。也许是因为该实现仅适用于列表和网格视图。

知道怎么做吗?

4

2 回答 2

2

您需要做的基本上是创建自己的 ActionBar 主题,将 windowActionBarOverlay 设置为 true:

<!-- the theme applied to the application or activity -->
<style name="CustomActionBarTheme"
       parent="@android:style/Theme.AppCompat">
    <item name="android:windowActionBarOverlay">true</item>

    <!-- Support library compatibility -->
    <item name="windowActionBarOverlay">true</item>
</style>

这与听起来完全一样 - 它位于您当前视图的顶部。但是,这也意味着您需要在主视图的顶部添加一个额外的边距以说明 ActionBar 覆盖。

<!-- Support library compatibility -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingTop="?attr/actionBarSize">
    ...
</RelativeLayout>

一旦您启动并运行您的自定义 ActionBar 主题,您应该不会再看到额外的空间。这些代码片段直接取自Android Developer Training Guide。按照链接获取有关 ActionBarOverlay 工作原理的更多详细信息。

于 2014-10-31T21:31:22.723 回答
0

更简单的方法是使用app:layout_scrollFlags.

 <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="?attr/colorPrimary"
            android:minHeight="?attr/actionBarSize"
            app:layout_scrollFlags="scroll|enterAlways"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
            app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/> 

所以 Toolbar 会自动检测滚动并开始隐藏或显示。

PS如果您使用的是ListView,您需要将其更改为RecycleView

于 2016-03-20T09:13:29.273 回答