自定义底部菜单栏目

自定义 BottomNavigationView

功能:
选中绿色 + 放大缩小动画
正常状态 : 图标 + 文字 + 红点
只能选中一个

选中某个Item时 切换到对应的栏目导航图中
-> 第一个fragment的id
-> NavController 实现跳转

-> 正常图片
-> 选中图片
-> Title
-> 消息数量

在 BottomView 中添加 TabItem

(一)
WeChatBottomNavigationView
与外部沟通的桥梁(作为管理者)只负责四个标签该如何摆放,每一个标签就是一个 TabItem

BottomView -> ViewGroup(ViewGroup中有很多控件,需要管理控件)
NavController(被点击就导航过去)
destinationIdList(放 id 告诉具体切换到哪去)

(二)
TabItem ->自己布局-> ViewGroup【标签项】
属性:
Icon 默认图标是什么 —— ImageView
selectedIcon 选中的图标是什么
title 标题 —— TextView
message 边缘的的消息提醒 badge 标记
clickListener()被点击了事件要往外传
放大缩小动画
将点击的事件传递给外部
改变点击的状态

BadgeView -> View【消息提示红点】【标记】


View:
onMeasure —-> 宽高由父容器或者自己决定
onDraw

ViewGroup:
(是容器不需要绘制,只需要将别人绘制好的拿过来即可)
onMeasure —-> 由父容器 自己 子控件决定
onLayout —-> 布局每一个子控件(告诉每一个控件它需要显示在哪个位置)
onLayout()

viewGroup
是一个抽象类
需要重写onLayout()方法

onSizeChanged()
尺寸发生改变这个方法就会被调用 从0——>有——>新

onMeasure()
父容器测量


底部导航栏的高度是确定了的默认都是64dp
使用BottomNavigationView时
android:layout width=”match parent”
android:layout height=”wrap content”
就算不添加menu内容,其高度也不是0

如果在没有menu的情况下不给menu内容,使用android:layout width=”wrap content” 其宽度显示0


onMeasure()
直接使用外部给的即可,无需

Donate
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2023-2025 Annie
  • Visitors: | Views:

嘿嘿 请我吃小蛋糕吧~

支付宝
微信