我使用材料设计的最新版本底部导航栏。如果要使用图标,我想在上面加一个红点。不幸的是,默认情况下,导航栏会自动应用颜色,并且会丢失红点颜色。 如何在图标上添加红点?要在导航栏顶部应用另一个ViewGroup?扩展导航栏类并更改着色行为?
答案 0 :(得分:0)
此图标称为badge
,它以多种方式实现:Display badge on top of bottom navigation bar's icon
我本人就是这样实现此功能的:
private fun addNewRedDotImage() {
val activityItemView: BottomNavigationItemView = navigation.findViewById(R.id.activity)
val icon = activityItemView.findViewById<ImageView>(R.id.icon)
val badge = LayoutInflater
.from(this)
.inflate(R.layout.red_dot_notification_badge_layout, activityItemView, false)
/* get position of icon relative to its parent */
val iconRect = Rect()
icon.getLocalVisibleRect(iconRect)
val badgeLeftPosition = activityItemView.width / 2
val badgeTopPosition = iconRect.top
/* set position of badge relative to the icon */
val params = LayoutParams(WRAP_CONTENT, WRAP_CONTENT)
params.leftMargin = badgeLeftPosition
params.bottomMargin = badgeTopPosition
activityItemView.addView(badge, params)
}