如何在 Material Design 中使用 CollapsingToolbarLayout 实现折叠式标题栏

阅读时长 14 分钟读完

介绍

前端开发中,很多 web 应用都需要使用到标题栏,以提供页面的导航和提示信息。在 Material Design 设计语言中,折叠式标题栏(CollapsingToolbarLayout)是一个非常常用的组件,可以将标题栏与内容区域紧密地结合起来,提供良好的用户体验。

本文将介绍如何在 Material Design 中使用 CollapsingToolbarLayout 实现折叠式标题栏,并提供一个完整的示例代码,帮助读者快速上手。

实现步骤

第一步:添加依赖

将以下依赖添加到项目的 build.gradle 文件中:

第二步:定义布局

在布局文件中,添加 AppBarLayout 和 CollapsingToolbarLayout 组件,如下所示:

-- -------------------- ---- -------
----------------------------------------------------
    -----------------------------------
    -----------------------------------
    -------------------------------------

    ------------------------------------------------
        ------------------------------
        -----------------------------------
        ---------------------------------------------
        ----------------------------------------------

        -----------------------------------------------------------
            -----------------------------------------
            -----------------------------------
            ------------------------------------
            -------------------------------------
            ---------------------------------------------------

            ----------
                ---------------------------
                -----------------------------------
                ------------------------------------
                ------------------------------
                ----------------------------------
                ---------------------------------------------

            ----------------------------------
                -------------------------
                -----------------------------------
                -------------------------------------------
                -------------------------------
        -------------------------------------------------------------
    --------------------------------------------------

    --------------------------------------
        ----------------------------------
        -----------------------------------
        ------------------------------------
        -------------------------------------------------------------

        ---------
            -----------------------------------
            ------------------------------------
            ---------------------------------------
            ----------------------------------
            -------------------------------------------
    ----------------------------------------

------------------------------------------------------

布局文件中包含三个组件:

  • AppBarLayout:顶部布局,用于包含 CollapsingToolbarLayout 组件。
  • CollapsingToolbarLayout:折叠式标题栏布局,包含一个图片和一个 Toolbar 组件。
  • NestedScrollView:可滚动的内容区域。

值得注意的是,CollapsingToolbarLayout 中必须包含一个 ImageView,用于展示背景图片。同时,Toolbar 组件需要添加 app:layout_collapseMode="pin" 属性,以提供折叠式标题栏的 pin 功能。

第三步:设置数据

在代码中,可以使用以下方法设置 CollapsingToolbarLayout 中的图片和 Toolbar 中的标题:

第四步:添加滚动效果

为了实现折叠式标题栏的效果,需要在布局文件和代码中添加一些配置:

-- -------------------- ---- -------
-----------------------------------------------------------
    -----------------------------------------
    -----------------------------------
    ------------------------------------
    -------------------------------------
    ---------------------------------------------------

    ----------
        ---------------------------
        -----------------------------------
        ------------------------------------
        ------------------------------
        ----------------------------------
        ---------------------------------------------

    ----------------------------------
        -------------------------
        -----------------------------------
        -------------------------------------------
        -------------------------------
-------------------------------------------------------------


--------------------------------------
    ----------------------------------
    -----------------------------------
    ------------------------------------
    -------------------------------------------------------------
----------------------------------------

在 CollapsingToolbarLayout 中,需要添加以下属性:

  • app:layout_scrollFlags="scroll|exitUntilCollapsed":设置当滚动布局时,折叠式标题栏将退出屏幕,并跟随布局一起滚动。
  • app:layout_collapseMode="parallax":设置滚动时,图片会以视差效果进行动画。
  • app:layout_collapseParallaxMultiplier="0.7":设置视差效果的速度。

在 NestedScrollView 中,需要添加以下属性:

  • app:layout_behavior="@string/appbar_scrolling_view_behavior":通知 NestedScrollView 与折叠式标题栏一起滚动。

同时,在代码中,可以通过监听 AppBarLayout 的滚动状态,实现标题栏的颜色和 Toolbar 字体的改变:

-- -------------------- ---- -------
------------ ------------ - --------------------------------
----- ----------------------- ----------------------- - -------------------------------------------
----- ------- ------- - ---------------------------

------------------------------------------- -------------------------------------- -
    ---------
    ------ ---- ---------------------------- ------------- --- --------------- -
        --- --------- - -----------------------------------
        ----- ---------- - ------- ------------------------ - ------- ----------

        -- ----------- -- -- -- ------- -
            ----------------------------------------------
            ------------------------------------------------------
            ---------------------------------------- ---------------------- -
                ---------
                ------ ---- ------------ ----- -
                    ----------------
                -
            ---

            ------ - --------
        - ---- -- ----------- - -- -- -------- -
            -----------------------------------------------
            -------------------------------------------------------

            ------ - --------
        -
    -
---

效果示例

完整的示例代码如下:

-- -------------------- ---- -------
------ ----- ------------ ------- ----------------- -

    ------- ------- ------ - -----

    ---------
    --------- ---- --------------- ------------------- -
        -----------------------------------
        ---------------------------------------

        ----------------------- ----------------------- - -------------------------------------------
        --------- --------- - -----------------------------
        ------- ------- - ---------------------------

        ------------------------------------------------------------
        ----------------------------------------------------
        -----------------------------

        ------------ ------------ - --------------------------------

        ------------------------------------------- -------------------------------------- -
            ---------
            ------ ---- ---------------------------- ------------- --- --------------- -
                --- --------- - -----------------------------------
                ----- ---------- - ------- ------------------------ - ------- ----------

                -- ----------- -- -- -- ------- -
                    ----------------------------------------------
                    ------------------------------------------------------
                    ---------------------------------------- ---------------------- -
                        ---------
                        ------ ---- ------------ ----- -
                            ----------------
                        -
                    ---

                    ------ - --------
                - ---- -- ----------- - -- -- -------- -
                    -----------------------------------------------
                    -------------------------------------------------------

                    ------ - --------
                -
            -
        ---
    -
-

效果如下图所示:

总结

本文介绍了在 Material Design 中使用 CollapsingToolbarLayout 实现折叠式标题栏的方法,并提供了示例代码。CollapsingToolbarLayout 是一个功能强大的 UI 组件,可以改善网页体验,给用户带来更好的交互体验。

在实际开发中,也可以结合网页的需求,将 CollapsingToolbarLayout 与其他组件结合起来,实现更加复杂的交互效果。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6521ae7995b1f8cacd9224cc

纠错
反馈