安卓学习-BottomNavigationView (menu) 的使用。

173 阅读2分钟

记录使用 BottomNavigationView 过程中遇到的问题。

首先创建工程的时候选择 Bottom Navigation Activity,然后填写工程名称, 开发语言选择Kotlin即可。

image.png

项目编译痛过之后会看到下面的页面,该页面中有几个需要修改的点:

  1. 底部导航栏点击效果要去掉。
  2. 底部导航栏的名称以及图标需要换掉,选中后的颜色也需要更改。
  3. 底部导航栏我要加一个按钮。
  4. 头部导航条和状态条颜色要去掉。
5FB5DB34E340794646A08EE258D68A1E.jpg

1.底部导航栏点击效果要去掉。

找到该文件

image.png

新增标签,然后重新编译。

app:itemRippleColor="@null"

2.底部导航栏的名称以及图标需要换掉,选中后的颜色也需要更改。

替换成自己的图标,首先选中和非选中的图标是不一样的,那就用到 selector 。 创建方式:

第一步,鼠标右击 res 文件夹。

image.png

第二步,New -> Vector Asset

image.png

第三步,因为我是用的是SVG,所以选择第二个。然后点击箭头的文件夹图标,再然后选择你的图标添加进来就好。

image.png

第四步,把你所有的图标添加进来之后,开始创建selector文件。右击 darwble 文件夹,然后 New -> Android Resource File.

注意这里一定要右击,`darwble` 不然下一步不会出现 `selector` 选项
image.png

第五步,填写号名称之后,点击OK即可。

image.png

第六步,在新建的文件里面 新增两个item ,item里面的标签,

  • color:颜色
  • drawable:图标
  • state_selected:是否选中
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/tabbatUnoSelectColor" android:drawable="@drawable/ic_icons_outlined_chats" android:state_selected="false" />
    <item android:color="@color/mainColor" android:drawable="@drawable/ic_icons_filled_chats" android:state_selected="true"/>
</selector>

第七步,找到这个文件,

image.png

icon标签后选中刚新增的selector文件,编译代码后会发现图标已经更换成功了,但是图标的颜色不是我设置的颜色,

image.png

第八步,把这两个颜色更改为你图标想要的颜色,编译器发现 头部状态条和导航条,以及底部选中图标都变了色。(暂时不知道,每个Fragment导航条怎么设置不同的颜色,后面会补充进来)。

image.png

3. 底部导航栏我要加一个按钮。

image.png

主要是上面红框内三个文件的修改。

3.1 首先是 bottom_nav_menu

很简单,添加一个item即可

<item
    android:id="@+id/navigation_me"
    android:icon="@drawable/selector_tabbar_me"
    android:title="@string/tabbar_me" />

3.2 mobile_navigation

这里需要创建一个 Package 和 fragment 方式如下。

Package

右击 ui -> New -> Package

image.png

然后再弹出的窗口里,默认的文字后面填写新的Package名称,

image.png
fragment

右击新建的 Package -> New -> Fragment -> Fragment (with ViewModel).

image.png

然后填写新的 fragment 名称即可。

image.png

然后找到 mobile_navigation 文件,在最底部新增一个fragment 标签,android:name=的值是你新增的Fragment页面

image.png

也很简单,添加一个fragment 即可

<fragment
    android:id="@+id/navigation_me"
    android:name="com.example.wechat_android_practice.ui.me.MeFragment"
    android:label="@string/tabbar_me"
    tools:layout="@layout/fragment_me" />

3.3 MainActivity

在后方添加上你在 mobile_navigation 中 新增的 fragment的id。

image.png

编译代码后,底部导航栏新增了一个标签,点击即可切换到新增的页面。