【问题标题】:Recommended way of implementing a scroll-aware FloatingActionButton实现滚动感知 FloatingActionButton 的推荐方法
【发布时间】:2015-12-16 13:13:36
【问题描述】:

我正在按照 Material Design 构建一个应用程序,并且想知道如何在滚动时隐藏 FAB。谷歌搜索导致几个答案,有人说提供自定义 onScrollListeners 等,有人说实现布局行为。是否有这样做的标准/推荐方式?一种方法比另一种方法有什么优势?

【问题讨论】:

    标签: android material-design android-support-library android-design-library floating-action-button


    【解决方案1】:

    最好的方法是使用支持设计库中提供的FloatingActionButton,并重新定义其行为。例如,看看this class

    您可以将其复制粘贴到您的项目中,然后将此行为分配给您的FloatingActionButton

    <android.support.design.widget.FloatingActionButton
         android:layout_height="wrap_content"
         android:layout_width="wrap_content"
         android:layout_gravity="end|bottom"
         android:layout_margin="@dimen/fab_margin"
         app:layout_behavior="com.your.package.name.ScrollAwareFABBehavior" />
    

    完成后,您的 FAB 将对滚动手势做出反应并自动隐藏/显示。当然,这与所有Behaviors 一样,只有在您使用CoordinatorLayout 作为根视图时才有效。

    好处:

    • 使用官方库;
    • 使用Behaviors,这绝对是监听滚动事件的最简单方法。由于FloatingActionButton 是设计库的一部分(实现Behaviors),我想说这几乎是官方的方式;
    • Behavior 类是由 Ian Lake 编写的,据我所知,他在 google 工作。

    【讨论】:

    • 感谢您的回答。这正是我现在所做的,但问题是我还有一个工具栏,我将其设置为使用滚动标志滚动,而问题是工厂仅在工具栏消失并且用户继续滚动后才会消失。我希望这两件事同时发生。有什么办法我自己调查一下,谢谢你的回答!
    • @user 我明白,但我看不到解决方法。
    • 我尝试在协调器布局中将其与 WebView 一起使用,但它似乎对我的 WebView 滚动没有反应。知道如何解决这个问题吗?
    • @clu 也许 WebView 不支持嵌套滚动?如果您的问题尚不存在,请尝试发布您自己的问题。
    猜你喜欢
    • 2017-10-10
    • 1970-01-01
    • 2011-10-18
    • 2017-12-23
    • 1970-01-01
    • 1970-01-01
    • 2016-03-13
    • 1970-01-01
    • 2021-04-24
    相关资源
    最近更新 更多