选中后,我想在每个“底部导航 View 项目”的顶部放置一个栏。如下图所示,但我没有找到方法。 android - 将顶部栏添加到底部导航 View 项-LMLPHP

我不知道该怎么做

最佳答案

可以通过在底部导航上添加一个 View 来实现,请检查下面的代码,也可以使用它在底部导航项上添加任何 View ,例如徽章,小图标等。

栏的布局 xml

<?xml version="1.0" encoding="utf-8"?>
<View xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="100dp"
    android:layout_height="2dp"
    android:layout_gravity="center_horizontal"
    android:background="@color/red"
    android:gravity="center"/>

Controller (显示/隐藏)
class BottomNavigationHelper {

    fun showBadge(context: Context, bottomNavigationView: BottomNavigationView, @IdRes itemId: Int) {
        removeBadge(bottomNavigationView, itemId)
        val itemView = bottomNavigationView.findViewById<BottomNavigationItemView>(itemId)
        val badge = LayoutInflater.from(context).inflate(R.layout.layout_red_badge, bottomNavigationView, false)
        itemView.addView(badge)
    }

    fun removeBadge(bottomNavigationView: BottomNavigationView, @IdRes itemId: Int) {
        val itemView = bottomNavigationView.findViewById<BottomNavigationItemView>(itemId)
        if (itemView.childCount == 3) {
            itemView.removeViewAt(2)
        }
    }
}

示例调用
BottomNavigationHelper().showBadge(mContext, bottomNavigationView, R.id.navigation_home)

08-26 07:51