Android关于BottomNavigationView效果实现指南
系列文章目录
Android关于BottomNavigationView效果实现指南
老规矩,文中/文末会放置源码
文章目录
- 系列文章目录
- 前言
- 一、初识BottomNavigationView
- 二、BottomNavigationView中的颜色关键实现代码解析(举例)
- 是如何定义的颜色的。
- 三、开始解决问题
- 1.如何修改图标颜色
- 2.如何使图标点击颜色不改变
- 3.如何使点击时字体不改变大小
- 4.当你的图标是多色系时
- 5.不想要ActionBar
- 四、总结
前言
好久不见,计蒙回来了,最近有粉丝投稿了几个关于BottomNavigationView的一些问题,今天发篇比较详细的文章总结一下,希望能够对你有所帮助。
提示:以下是本篇文章正文内容,下面案例可供参考
一、初识BottomNavigationView
在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"><itemandroid:id="@+id/navigation_home"android:icon="@drawable/ic_home"android:title="@string/title_home" /><itemandroid:id="@+id/navigation_dashboard"android:icon="@drawable/ic_dashboard_black_24dp"android:title="@string/title_dashboard" /><itemandroid: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进阶之旅------gt;Android APP终极瘦身指南
首先声明,下面文字转载于: APK瘦身实践 http://www.jayfeng.com/2015/12/29/APK%E7%98%A6%E8%BA%AB%E5%AE%9E%E8%B7%B5/ APP ...
- Android P应用适配相关指南
Android P应用适配相关指南 文章目录 Android P应用适配相关指南 一 Android P适配指导 二 刘海屏适配指导 三 Crypto JCA 提供程序已被移除,弃用 Bouncy C ...
- Android 动画 Animator 家族使用指南
零.前言:本文知识点 ValueAnimator的认识与使用 估值器TypeEvaluator的自定义与使用 插值器TimeInterpolator的自定义与使用 Path与Animator的结合使用 ...
- Android动画Animator家族使用指南
零.前言:本文知识点 ValueAnimator的认识与使用 估值器TypeEvaluator的自定义与使用 插值器TimeInterpolator的自定义与使用 Path于Animator的结合使用 ...
- android 下拉窗帘,Android 窗帘(Curtain)效果二之波浪式动态扭曲效果
上一篇文章已经实现了如何把一张图片扭曲成波浪效果,那么这一篇文章我们介绍如何动态调整系数,去改变波浪图片的皱褶成度.我们自一次观察下图morning routine的效果: 仔细观察我们发现,当往右滑 ...
- Android m 自定义下拉菜单,Android实现动画效果的自定义下拉菜单功能
我们在购物APP里面设置收货地址时,都会有让我们选择省份及城市的下拉菜单项.今天我将使用Android原生的 Spinner 控件来实现一个自定义的下拉菜单功能,并配上一个透明渐变动画效果. 要实现的 ...
- android 卡片旋转动画,Android 卡片翻转效果
Android 卡片翻转效果使用的Cramre来完成 记录一下: 一个好用的3D旋转工具类 oid.graphics.Matrix; import android.util.Log; import a ...
- 【Android源代码下载】收集整理android界面UI效果源码
在Android开发中,Android界面UI效果设计一直都是很多童鞋关注的问题,今天给大家分享下大神收集整理的多个android界面UI效果,都是源码,都是干货,贡献给各位网友! 话不多说,直接上效 ...
- android 动态创建view,react-native动态创建Android View 无效果
问题描述 react-native动态创建Android View 无效果,我想在react-native里面直接点击函数进行创建,也就是通过module中的方法创建View 问题出现的环境背景及自己 ...
- Android设计原则及规范指南!UI设计师值得一看!
现在的Android手机界面样式千差万别,因为手机厂商都有自己独立的一套主题系统,不同品牌的Android手机主题和交互方式也有很大的区别. Android的界面设计中控件主要包括按钮.卡片.对话框. ...
最新文章
- node更新到最新版本_云顶之弈10.24版本临时更新永恩、劫大砍,最新上分阵容推荐...
- C#操作Excel(读取)
- 【Android】进程
- 深度思考|TCP协议存在那些缺陷?
- java setr()_Java RPr.setRFonts方法代码示例
- 跨越适配性能那道坎,企鹅电竞Android weex优化
- could not find driver
- BZOJ3097Hash Killer I
- linux spec cpu,SPEC CPU2006的安装和使用
- 空气炸锅如何挑选研究
- 在线学习算法FTRL基本原理
- java苞子_由菌丝末端形成的一种囊状结构的孢子称为
- 基于1939协议的发动机控制程序:包括发动机转速油门控制,发动机常用转速、机油压力、水温、工作小时读取,spn故障码取,发动机启动转速保护
- getTime()得到时间戳不一样
- java输入长和宽输出面积_用Java实现计算矩形的面积与周长
- 【daisy-framework】SpringBoot+MyBatis+Druid 多数据源
- 毕业设计 基于51单片机的电子秤设计(源码+硬件+论文)
- 一个 TV app 的直播节目实例,包含各央视频道及卫视频道
- unity2d游戏独立开发全流程 第一节 基于TileMap场景搭建
- 业内人士称游资3年前开始准备炒作糖价
热门文章
- 安装11.2.0.3时,OUI的log报错:OUI-10066:Not All The Dependencies For The Component ... Could Be Found
- 系统之家xp服务器系统怎么安装,系统之家教你如何用u盘装xp系统
- android获取连接wifi名称,Android开发:获取手机当前连接的WiFi名称
- 把图片背景变透明(制作签名档)
- 国家终于对流氓APP进行管制了
- GitHub、Apache 等平台开源项目,受美国出口管制么?
- Kafka工具--雅虎CMAK
- windows7蓝牙怎么打开_windwos7系统怎么添加蓝牙鼠标
- Sybase ASE 12.5.4数据库安装备份还原操作步骤
- TM4C123GLaunchPad教程四_时钟配置