自定义底部导航栏图标

时间:2018-12-15 08:59:02

标签: android uinavigationbar

我使用材料设计的最新版本底部导航栏。如果要使用图标,我想在上面加一个红点。不幸的是,默认情况下,导航栏会自动应用颜色,并且会丢失红点颜色。 如何在图标上添加红点?要在导航栏顶部应用另一个ViewGroup?扩展导航栏类并更改着色行为? enter image description here

1 个答案:

答案 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)
}