安卓棒棒糖工具栏中快速返回操作栏

3
我正在使用AppCompat-v21的新工具栏。我想做的是,当用户向下滚动时隐藏操作栏,当用户向上滚动时再次显示操作栏。就像谷歌播放应用程序一样。我还有一个标签布局在工具栏下面,就像谷歌播放应用程序一样。那需要留在那里。
我尝试过从Google IO应用程序中获取代码。但这会使工具栏消失,并且主要内容在工具栏消失时不会向上移动。在工具栏之前留下了一个空白的区域。也许是因为该实现仅适用于列表和网格视图。
有任何想法怎么做吗?

嗨,Alam,你找到解决问题的方法了吗? - Adelino
@Adelino 不,我没有。使用谷歌IO应用程序的源代码,我已经在某种程度上做到了这一点。但仍然没有按照我想要的方式工作。 - Raquib-ul Alam
1
嗨,Alam,我在寻找好的示例后,发现了这个https://github.com/ksoichiro/Android-ObservableScrollView存储库,我只取了我需要的部分,它对我很有用。 - Adelino
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开发者培训指南。点击链接获取更详细关于ActionBarOverlay如何工作的信息。


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

因此,工具栏将自动检测滚动并开始隐藏或显示。

附言:如果您正在使用ListView,则需要更改为RecycleView


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接