Material Design 中如何实现 BottomSheetDialog

阅读时长 13 分钟读完

在 Material Design 中,Bottom Sheet Dialog 是一个非常常见和有用的控件。它可以作为一种交互方式,让用户操作和内容更加便捷和自然,同时也让应用在视觉上更加美观和充实。那么,本文将详细介绍在 Material Design 中如何实现 Bottom Sheet Dialog。

什么是 Bottom Sheet Dialog?

Bottom Sheet Dialog 是一种可以从应用底部滑出的对话框,通常包含一些有用的操作,比如:分享、添加、保存、查看等等。Bottom Sheet Dialog 在 Material Design 中非常常见,而且使用也很便利,可以让应用在用户体验上更加自然和优雅。

Bottom Sheet Dialog 有两种形式:

  • Modal Bottom Sheet: 它是一个模态的 Bottom Sheet Dialog,可以在应用底层弹出,屏幕其他部分变得阴暗。它最适合用户与应用进行交互和操作,比如:显示一个列表、分享、评论等等。
  • Bottom Sheet Persistent: 它是一个非模态的 Bottom Sheet Dialog,可以作为应用的一个组成部分进行显示。它最适合显示大段的内容或者需要一直显示在屏幕上的操作或信息。

如何实现 Bottom Sheet Dialog?

在 Material Design 中,Bottom Sheet Dialog 可以通过使用 Android 自带的 BottomSheetDialog 实现。在实现 Bottom Sheet Dialog 之前,需要确保项目中已经引入了 Material Design 的相关依赖,比如:

实现 Modal Bottom Sheet

步骤 1: 准备布局文件

在Bottom Sheet Dialog 中,需要为其提供一个布局文件。可以使用自定义布局文件,也可以使用 Material Design 提供的布局文件。在这里,我们使用 Material Design 自带的布局文件作为示例:

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

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

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

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

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

这样一个简单的布局文件里面包含了一个标题、3个操作按钮和一个取消按钮,可以实现用户进行内容分享、保存和取消操作。

步骤 2: 创建 Bottom Sheet Dialog

接下来,需要创建一个 Bottom Sheet Dialog 对象,并指定其布局文件。在这里,我们选择创建 Modal Bottom Sheet Dialog:

步骤 3: 显示 Bottom Sheet Dialog

创建完 Bottom Sheet Dialog 后,还需要通过代码触发它进行显示。在这里,我们选择通过点击一个按钮,弹出 Bottom Sheet Dialog:

综上所述,我们完成了 Modal Bottom Sheet Dialog 的实现。此时,点击按钮即可弹出 Modal Bottom Sheet Dialog 进行交互和操作。

实现 Persistent Bottom Sheet

实现 Persistent Bottom Sheet 和 Modal Bottom Sheet 的区别在于,Persistent Bottom Sheet 不需要手动触发,而是随着页面的滚动而产生。接下来,将介绍如何实现一个简单的 Persistent Bottom Sheet,示例如下:

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

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

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

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

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

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

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

这个布局文件包含了一个 RecyclerView 和一个 LinearLayout。LinearLayout 是 Persistent Bottom Sheet 的主体部分,RecyclerView 是主页面的内容,使用这种方式布局文件与页面布局文件是合并的。

接下来,需要在 Java 中创建 Bottom Sheet Callback obj,代码如下:

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

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

接着,在 Activity 中进行 Bottom Sheet 初始化,同时将 Bottom Sheet 关联的 RecyclerView 放入其中

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

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

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

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

    -

这里使用了 Android 中提供的 BottomSheetBehavior 对象,用于管理 Bottom Sheet 的滑动状态和行为。设置方法主要有:

最后,要在主页面中添加滑动监听事件,用于管理下拉关联到底部的状态:

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

这样就完成了 Persistent Bottom Sheet Dialog 的实现。这种 Bottom Sheet Dialog 在页面滑动时,主要部分的内容可以滑动而底部的操作部分不被覆盖。效果十分出色。

总结

本文详细介绍了 Material Design 中 Bottom Sheet Dialog 的实现方式。根据使用场景和需求,可以实现不同类型的 Bottom Sheet Dialog,从而优化用户操作和交互体验。Bottom Sheet Dialog 既美观又实用,是 Material Design 中值得深入研究和应用的控件之一。

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

纠错
反馈