在 BottomNavigationView 中禁用 tooltipText

Disable tooltipText in BottomNavigationView

我正在使用

implementation 'com.google.android.material:material:1.1.0-alpha09'

这是我的菜单

 <item
    android:id="@+id/llHome"
    android:icon="@drawable/selector_menu_home"
    android:title="@string/navigation.bottom.home"
    app:tooltipText="@null" />

但只要我写长按或禁用它,带有菜单名称的工具提示就会继续出现。知道如何禁用工具提示吗?

它将显示工具提示文本或选项卡标题。您可以通过遍历所有 BottomNavigationItemView 并调用 TooltipCompat.setTooltipText(view, null)

来清除文本

实际上 bottomNavigationView.menu.forEach { TooltipCompat.setTooltipText(activity!!.findViewById(it.itemId), null) } 按下底部按钮后不工作。

这是我的解决方案:

fun BottomNavigationView.disableTooltipText() {
  try {
    val menuViewField = this.javaClass.getDeclaredField("menuView")
    menuViewField.isAccessible = true
    val menuView = menuViewField.get(this) as BottomNavigationMenuView
    menuView.forEach {
      it.setOnLongClickListener {
        true
      }
    }
  } catch (e: Exception) {
    Log.w(e)
  }
}

这对我不起作用,bottomNavigationView.menu.forEach { TooltipCompat.setTooltipText(activity!!.findViewById(it.itemId), null) }不起作用所以下面的答案对我有用

bottomNavigationView.menu.forEach {
                val view = bottomNavigationView.findViewById<View>(it.itemId)
                view.setOnLongClickListener {
                    true
                }
            }

我们可以用这个答案创建一个扩展:

fun BottomNavigationView.disableTooltipText() {
    val menuIterator = menu.iterator()
    while(menuIterator.hasNext()) {
        val menu = menuIterator.next()
        findViewById<View>(menu.itemId)?.let { view ->
            TooltipCompat.setTooltipText(view, null)
        }
    }
}