BottomNavigationView 始终显示图标和文本标签

新手上路,请多包涵

我正在使用设计支持库版本 25 中的 android.support.design.widget.BottomNavigationView

 compile 'com.android.support:design:25.0.0'

<android.support.design.widget.BottomNavigationView
        android:id="@+id/bottomBar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_gravity="center"
        app:itemBackground="@color/colorPrimary"
        app:menu="@menu/bottom_navigation_main"
        android:forceHasOverlappingRendering="true"/>

当@menu/bottom_navigation_main 中只有三个操作时,它始终显示图标和文本标签。

当有超过三个动作时,始终显示图标和文本标签的方式是什么。

原文由 Ammad Ali 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
2 个回答

对于仍在寻找解决方案并且不想依赖第三方库或运行时反射的任何人,支持库 28/Jetpack 中的 BottomNavigationView 原生支持始终具有文本标签。

是您正在寻找的方法。

或者在 XML 中, app:labelVisibilityMode="labeled"

原文由 shaishgandhi 发布,翻译遵循 CC BY-SA 4.0 许可协议

这是一个结合了@STAR_ZERO 和@KishanSolanki124 解决方案的Kotlin 扩展函数。

 fun BottomNavigationView.disableShiftMode() {
    val menuView = getChildAt(0) as BottomNavigationMenuView

    menuView.javaClass.getDeclaredField("mShiftingMode").apply {
        isAccessible = true
        setBoolean(menuView, false)
        isAccessible = false
    }

    @SuppressLint("RestrictedApi")
    for (i in 0 until menuView.childCount) {
        (menuView.getChildAt(i) as BottomNavigationItemView).apply {
            setShiftingMode(false)
            setChecked(false)
        }
    }
}

要使用它:

 myBottomNavigation.disableShiftMode()

原文由 chetbox 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题