Я реализовал значок счетчика в соответствии с следующим потоком.
Затем я немного потратился, чтобы удалить значок из элемента навигации, когда счетчик уведомлений равен 0:
fun setInboxIcon(count: Int) {
val bottomNavigationMenuView = bottomNavigation.getChildAt(0) as BottomNavigationMenuView
val bottomNavigationItemView = bottomNavigationMenuView.getChildAt(3) as BottomNavigationItemView
val inboxBadge = LayoutInflater.from(context).inflate(R.layout.inbox_icon_layout, bottomNavigationMenuView, false)
notificationCount = inboxBadge.findViewById(R.id.notification_count)
if (count == 0) {
notificationCount.visibility = GONE
notificationCount.text = ""
bottomNavigationItemView.removeView(inboxBadge) // <- nothing happens
} else {
notificationCount.visibility = VISIBLE
notificationCount.text = Math.min(count, 9).toString()
bottomNavigationItemView.addView(inboxBadge)
}
bottomNavigation.invalidate()
}
Проблема в том, что значок не удаляется, когда счетчик уведомлений равен 0, и я не могу понять, почему.
bottomNavigationItemView.addView(inboxBadge);
... и какой смысл раздувать представление, если count равен 0? - person Selvin   schedule 25.01.2018notificationCount.setVisibility(GONE);
он устанавливает видимость нового экземпляраnotificationCount
. см. его ответ, где он удаляет ранее созданный экземпляр View! - person Hesham Yassin   schedule 03.08.2018