一、需求 1.内容:实现BottomNavigation根据相应界面中有无未读消息显示小红点 2.demo:
二、实现步骤 1.首先根据BottomNavigation的Item数量确定小红点的数量 定义一个数组常量badges用来存放小红点
private val badges = arrayOfNulls<Badge?>(3)2.检查页面是否有未读消息,根据未读消息的数量来选择显示或隐藏小红点
private fun checkMorePageUnReadData() { val unread = //读取未读消息数量 ... if (unread > 0) { //显示 } else { //隐藏 } }3.显示或隐藏小红点
显示小红点:如果小红点存在则退出addBadgeAt(…)方法;如果不存在则显示小红点,显示时可设置文字,背景等内容,并绑定目标视图。隐藏小红点:循环遍历隐藏目标小红点 //显示 private fun addBadgeAt(position: Int, text: String? = "") { if (badges[position] != null) { return } @Suppress("UsePropertyAccessSyntax") badges[position] = QBadgeView(this) .setBadgeText(text) .setBadgeBackground( ContextCompat.getDrawable( this, R.drawable.shape_tab_red_tip ) ) .setGravityOffset(dip(9).toFloat(), dip(3).toFloat(), true) .bindTarget(new_bottom_navigation.getBottomNavigationItemView(position)) } //隐藏 badges.forEach { it?.hide(false) }三、Q&A