Material Design 中使用 CollapsingToolbarLayout 实现可折叠标题栏的方法详解!

在 Material Design 中,可折叠标题栏是一种非常流行的设计模式,它可以同时满足设计美观和用户体验的要求。CollapsingToolbarLayout 是实现这种设计模式的核心组件,本文将详细介绍如何使用 CollapsingToolbarLayout 实现可折叠标题栏。

什么是 CollapsingToolbarLayout

CollapsingToolbarLayout 是一个可以创建可折叠的标题栏的布局容器,它继承自 ViewGroup 组件,并提供了丰富的属性和方法,可以用于实现 Material Design 中的可折叠标题栏。

CollapsingToolbarLayout 可以包含一个 Toolbar 和一个或多个子 View。它还提供了丰富的自定义属性,例如:

  • collapsedTitleGravity:折叠后标题的对齐方式;
  • expandedTitleGravity:展开时标题的对齐方式;
  • expandedTitleMargin:展开时标题的内边距;
  • contentScrim:当 CollapsingToolbarLayout 滚动时显示的颜色或 drawable;
  • statusBarScrim:当 CollapsingToolbarLayout 滚动时状态栏的颜色或 drawable。

如何使用 CollapsingToolbarLayout

下面我们通过一个具体的示例来介绍如何使用 CollapsingToolbarLayout 实现可折叠标题栏。

首先,创建一个布局文件,比如 activity_main.xml,代码如下:

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

在这个布局中,我们使用了 CoordinatorLayout 作为父布局,并在其中嵌套了一个 AppBarLayout 和一个 RecyclerView。AppBarLayout 包含了 CollapsingToolbarLayout 和一个 Toolbar。

在 CollapsingToolbarLayout 中,我们又使用了一个 ImageView 作为背景图片以及一个 TextView 作为标题。其中,ImageView 使用了 layout_collapseMode="parallax" 属性,使它的滚动速度比标题慢一些,以实现滚动视差的效果。TitleTextView 使用了 layout_collapseMode="pin" 属性和 layout_collapseParallaxMultiplier="0.7" 属性,实现了在滚动过程中标题的固定和视差效果。

RecyclerView 使用了 app:layout_behavior="@string/appbar_scrolling_view_behavior" 属性,以便在滚动时正确处理可折叠标题栏的行为。

最后,在代码中设置 Toolbar 的标题、导航图标等属性。代码如下:

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

在这段代码中,我们使用了 setSupportActionBar() 方法将 Toolbar 作为该 Activity 的 ActionBar,使用了 getSupportActionBar() 方法获取 ActionBar 对象,从而可以设置 ActionBar 的导航图标等属性。同时,我们通过调用 setTitleEnabled() 方法和 setTitle() 方法设置了可折叠标题栏的标题。

结论

CollapsingToolbarLayout 是一个非常实用的布局容器,可以轻松实现 Material Design 中的可折叠标题栏。通过本文的介绍,你可以了解到 CollapsingToolbarLayout 的基本用法,并学习到如何正确设置其内部子 View 的属性,以实现滚动视差和标题固定等效果。希望本文对你有所帮助,欢迎大家留言讨论。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/67304b69eedcc8a97c918bee