Material Design 中如何为 BottomNavigationView 添加自定义图标?

阅读时长 13 分钟读完

在使用 Material Design 开发 Android 应用时,BottomNavigationView 是一个常用的控件,它可以用来实现底部导航栏的功能。但是,BottomNavigationView 默认提供的图标可能不够满足我们的需求。那么,如何为 BottomNavigationView 添加自定义图标呢?下面就为大家介绍一下。

为 BottomNavigationView 添加自定义图标

在 Material Design 中,我们可以使用 app:itemIconTint 属性来设置 BottomNavigationView 的图标颜色。因此,我们可以通过修改该属性为 null,然后使用自定义的 ImageView 来替代原有的图标。具体实现步骤如下:

  1. 在布局文件中添加 BottomNavigationView

    注意,这里我们将 app:itemIconTint 属性设置为了 @null,这样 BottomNavigationView 中的图标颜色就会变成默认颜色。

  2. 创建自定义的 ImageView

    在项目中创建一个名为 BottomNavigationViewIcon 的类,继承自 ImageView,并重写 onMeasure 方法:

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

    此时,我们的自定义 ImageView 就创建好了,它会自适应大小,保证宽高相等。

  3. 在菜单中添加自定义图标

    res/menu 目录下创建一个名为 bottom_navigation_menu.xml 的文件,用于定义 BottomNavigationView 中的菜单。在菜单中添加自定义的图标:

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

    在每个菜单项中,我们将 app:actionLayout 属性设置为自定义的 ImageView 布局。

  4. 创建自定义的 ImageView 布局

    res/layout 目录下创建一个名为 bottom_navigation_icon.xml 的布局文件,用于定义自定义 ImageView 布局。这里我们使用一个 FrameLayout 将自定义 ImageView 包裹起来,以确保它的大小符合我们的要求:

    -- -------------------- ---- -------
    ----- ------------- ------------------
    ------------ ----------------------------------------------------------
        -----------------------------------
        ------------------------------------
        --------------------------------
    
        -------------------------------------
            ----------------------------------------
            -----------------------------------
            ------------------------------------ --
    
    --------------
  5. 在代码中设置自定义的图标

    最后,在代码中为自定义的 ImageView 设置图标即可:

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

    在上面的代码中,我们先获取到菜单,然后分别为每个菜单项的自定义 ImageView 设置图标。

至此,我们已经成功地为 BottomNavigationView 添加了自定义图标。下面提供一个完整的示例代码供大家参考:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

总结

本文介绍了如何为 Material Design 中的 BottomNavigationView 添加自定义图标。通过修改 app:itemIconTint 属性为 null,然后使用自定义的 ImageView 来替代原有的图标,我们可以轻松地为 BottomNavigationView 添加自己喜欢的图标。

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

纠错
反馈