Android关于BottomNavigationView使用指南

 更新时间:2022年01月12日 10:59:46   作者:计蒙不吃鱼  
本文主要介绍了Android关于BottomNavigationView使用指南,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

前言

好久不见,计蒙回来了,最近有粉丝投稿了几个关于BottomNavigationView的一些问题,今天发篇比较详细的文章总结一下,希望能够对你有所帮助。

提示:以下是本篇文章正文内容,下面案例可供参考

一、初识BottomNavigationView

常用属性:

  • app:itemTextColor 文字的颜色,可以通过selector来控制选中和未选中的颜色

  • app:itemIconTint 图标的颜色,可以通过selector来控制选中和未选中的颜色

  • app:itemIconSize 图标大小,默认24dp

  • app:iteamBackground 背景颜色,默认是主题的颜色

  • app:itemRippleColor 点击后的水波纹颜色

  • app:itemTextAppearanceActive 设置选中时文字样式

  • app:itemTextAppearanceInactive 设置默认的文字样式

  • app:itemHorizontalTranslationEnabled 在label visibility 模式为selected时item水平方向移动

  • app:elevation 控制控件顶部的阴影

  • app:labelVisibilityMode 文字的显示模式

  • app:menu 指定菜单xml文件(文字和图片都写在这个里面)

在Android Studio创建新项目时,会有很多小伙伴在模块中选择此类型的Activity,如下。

请添加图片描述

项目运行效果图如下:

请添加图片描述

二、BottomNavigationView中的颜色关键实现代码解析(举例)

是如何定义的颜色的。

关键代码如下(获取xml中的属性):

 ColorStateList backgroundTint =
        MaterialResources.getColorStateList(
            context, a, R.styleable.BottomNavigationView_backgroundTint);
    DrawableCompat.setTintList(getBackground().mutate(), backgroundTint);

    setLabelVisibilityMode(
        a.getInteger(
            R.styleable.BottomNavigationView_labelVisibilityMode,
            LabelVisibilityMode.LABEL_VISIBILITY_AUTO));
    setItemHorizontalTranslationEnabled(
        a.getBoolean(R.styleable.BottomNavigationView_itemHorizontalTranslationEnabled, true));

    int itemBackground = a.getResourceId(R.styleable.BottomNavigationView_itemBackground, 0);
    if (itemBackground != 0) {
      menuView.setItemBackgroundRes(itemBackground);
    } else {
      ColorStateList itemRippleColor =
          MaterialResources.getColorStateList(
              context, a, R.styleable.BottomNavigationView_itemRippleColor);
      setItemRippleColor(itemRippleColor);
    }

可以很明显的看到起到关键作用的是ColorStateList,而处理好这个传入的参数即可解决颜色问题。

三、开始解决问题

1.如何修改图标颜色

这里提供两种解决方式
xml中解决
首先:新建一个selector_color文件,设置两种状态的颜色

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="#63F7DE" android:state_checked="true"  />
    <item android:color="@android:color/black" android:state_checked="false"/>
</selector>

然后在BottomNavigationView中调用此文件

app:itemIconTint="@color/selector_color"

java文件中解决:
传入一个自定义的ColorStateList。
并将其以参数传入view中

navView.setItemIconTintList();

2.如何使图标点击颜色不改变

在java中调用其setItemIconTintList,传参为空即可

navView.setItemIconTintList(null);

3.如何使点击时字体不改变大小

在dimens文件中设置以下两个的值为同一大小即可

    //防止字体出现变大效果
    <dimen name="design_bottom_navigation_active_text_size">10dp</dimen>
    <dimen name="design_bottom_navigation_text_size">10dp</dimen>

4.当你的图标是多色系时

在java中调用其setItemIconTintList,传参为空

navView.setItemIconTintList(null);

然后设置图片状态的item中drawable的选择,举例如下

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/ic_home_black_24dp" android:state_checked="true"  />
    <item android:drawable="@drawable/ic_home_black_false_24dp" android:state_checked="false"/>
</selector>

最后在menu中调用此文件即可。举例文件名为:ic_home

<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/navigation_home"
        android:icon="@drawable/ic_home"
        android:title="@string/title_home" />

    <item
        android:id="@+id/navigation_dashboard"
        android:icon="@drawable/ic_dashboard_black_24dp"
        android:title="@string/title_dashboard" />

    <item
        android:id="@+id/navigation_notifications"
        android:icon="@drawable/ic_notifications_black_24dp"
        android:title="@string/title_notifications" />

</menu>

为了节省时间,只修改了第一个,效果如下

请添加图片描述

5.不想要ActionBar

1.将xml中paddingTop这行删除

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingTop="?attr/actionBarSize">

2.在java中将以下这行删除

NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);

3.设置APP样式为NoActionBar

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

四、总结

到此这篇关于Android关于BottomNavigationView使用指南的文章就介绍到这了,更多相关Android BottomNavigationView内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Android开发组件flutter的20个常用技巧示例总结

    Android开发组件flutter的20个常用技巧示例总结

    这篇文章主要为大家介绍了Android开发组件flutter的20个常用技巧示例总结,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • Android实现用户头像更换操作

    Android实现用户头像更换操作

    这篇文章主要介绍了Android实现用户头像更换操作的相关资料,更改头像用户操作很简单,但是对于程序员实际操作有些复杂,需要了解的朋友可以参考下
    2016-04-04
  • Android提高之多方向抽屉实现方法

    Android提高之多方向抽屉实现方法

    这篇文章主要介绍了Android的多方向抽屉实现方法,有一定的实用价值,需要的朋友可以参考下
    2014-08-08
  • Android studio实现刮刮乐的方法

    Android studio实现刮刮乐的方法

    这篇文章主要为大家详细介绍了Android studio实现刮刮乐的两种方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • Android反编译看看手Q口令红包的实现原理

    Android反编译看看手Q口令红包的实现原理

    这篇文章主要介绍了Android反编译看看手Q口令红包的实现原理,需要的朋友可以参考下
    2016-02-02
  • Android获取设备传感器的方法

    Android获取设备传感器的方法

    这篇文章主要为大家详细介绍了Android获取设备传感器的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-09-09
  • android自定义控件实现简易时间轴(1)

    android自定义控件实现简易时间轴(1)

    这篇文章主要为大家详细介绍了android自定义控件实现简易时间轴,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • Android ScrollView的顶部下拉和底部上拉回弹效果

    Android ScrollView的顶部下拉和底部上拉回弹效果

    本篇文章主要介绍了Android ScrollView的顶部下拉和底部上拉回弹效果,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • Android操作系统介绍之11种传感器

    Android操作系统介绍之11种传感器

    Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,非常不错,具有参考借鉴价值,感兴趣的朋友一起学习吧
    2016-07-07
  • Android组件之BroadcastReceiver广播接收者

    Android组件之BroadcastReceiver广播接收者

    这篇文章主要为大家介绍了Android组件之BroadcastReceiver广播接收者实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04

最新评论