Material Design 中使用 BottomSheetDialog 的技巧分享

阅读时长 15 分钟读完

Material Design 中使用 BottomSheetDialog 的技巧分享

在全球范围内,Material Design 已经成为了一种非常流行的用户界面设计风格。它为移动设备和底部工具栏提供了许多美观并且易于使用的设计,包括 BottomSheetDialog。

BottomSheetDialog可以在滑动弹出的层上显示额外的信息或者操作。这个操作模式通常用于操作列表或者表格。这篇文章将介绍如何在 Material Design 中使用 BottomSheetDialog,包括技巧、示例代码以及实用技巧。

创建 BottomSheetDialog

首先,我们需要构造一个简单的 BottomSheetDialog。在这个例子中,我们将建立一个带有两个按钮的 BottomSheetDialog 对话框,分别为 “确定” 和 “取消”:

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

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

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

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

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

代码解析:

  1. BottomSheetDialog 对象通过提供上下文(context)和样式(style)来创建。

  2. 然后我们使用 LayoutInflater 的 from() 方法将布局文件加载到 bottomSheetView 对象中。

  3. 现在,可以将 bottomSheetView 与 dialog 关联并显示在屏幕上。显示 dialog 的代码:bottomSheetDialog.show()。

BottomSheetDialog 中可以放置任何内容,包括动态的列表、表格、文本和多媒体元素。

自定义样式

默认情况下,BottomSheetDialog 在 Design Support 库中只提供了一种样式,它可能与你的项目主题不一致。所以,我们需要自定义它的样式,让它更好看。

  1. 在 values/styles.xml 文件中,新增 BottomSheetDialog 样式:
  1. 在布局文件中,将我们的样式作为 BottomSheetDialog 的主题使用:
  1. 利用在代码中上面示例传入的样式名即可。

动态操作

当我们需要在 BottomSheetDialog 中动态地添加或删除菜单项时,就需要使用 Recycler View。

Recycler View 是一种可复用的控件,可以在 ItemViewBinder 中创建。在 BottomSheetDialog 中使用 Recycler View 非常方便,可以将其与 BottomSheetDialog 的布局文件相结合。

以下是一个具有动态操作的 BottomSheetDialog 示例程序:

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

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

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

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

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

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

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

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

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

示例代码中,我们创建了 SampleAdapter,它是 RecyclerView.Adapter 的一个实现类。只需要在它的构造函数中加入我们的 ArrayList 即可生成 RecyclerView 中的内容。

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

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

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

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

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

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

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

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

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

样式和布局文件位于 res/layout/menu_row_layout.xml,具体内容如下:

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

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

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

上述示例中,我们使用 RecyclerView,它可以将动态的列表数据传递到 BottomSheetDialog 对象中。我们还为 RecyclerView 中的每个项目创建了一个 ViewHolder。在 onCreateViewHolder() 方法中,我们加载了 menu_row_layout.xml 布局文件,并在 onBindViewHolder() 中为每个项目设置相应的含义。

总结

当你需要创建一个用户界面操作时,请考虑 BottomSheetDialog。它可以帮助你在应用程序的屏幕底部显示嵌入信息、选项和其他相关的东西,同时也能帮助改进用户体验。

本文提供了 BottomSheetDialog 在 Material Design 中的详细指导和示例代码。希望这篇文章对于你理解和使用 Material Design 中的 BottomSheetDialog 有帮助!

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

纠错
反馈