You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级com.google.android.material:material:1.5.0后BottomNavigationView标签显示于图标上方的解决方法咨询

不用降级Material库版本就能解决这个问题!你遇到的情况是Material 1.5.0版本对BottomNavigationView的布局逻辑做了优化——当控件高度小于库定义的标准?attr/bottomNavigationBarHeight时,会自动把标签移到图标上方来适配有限空间。而你的布局里用了?android:attr/actionBarSize作为高度,这个值通常比BottomNavigation的默认高度要小,所以触发了这个新行为。

下面给你几个可行的解决办法:

方法1:改用BottomNavigation的标准高度

把布局里的android:layout_height从?android:attr/actionBarSize替换为?attr/bottomNavigationBarHeight,这是Material库为BottomNavigationView设定的标准高度,默认会保持标签在图标下方的布局:

<com.google.android.material.bottomnavigation.BottomNavigationView 
    android:id="@+id/nav_view" 
    android:layout_width="match_parent" 
    android:layout_height="?attr/bottomNavigationBarHeight" 
    android:background="@color/white" 
    android:alpha="0.9" 
    app:layout_constraintBottom_toBottomOf="parent" 
    app:itemIconTint="@drawable/bottom_nac_icon_color_selector" 
    app:itemTextColor="@drawable/bottom_nac_icon_color_selector" 
    app:menu="@menu/bottom_nav_menu" 
    app:labelVisibilityMode="labeled"/>

方法2:强制保留标签在下方(维持原高度)

如果你的设计必须保留?android:attr/actionBarSize的高度,可以通过指定app:itemLayout属性为Material库的默认item布局,强制标签显示在图标下方:

<com.google.android.material.bottomnavigation.BottomNavigationView 
    android:id="@+id/nav_view" 
    android:layout_width="match_parent" 
    android:layout_height="?android:attr/actionBarSize" 
    android:background="@color/white" 
    android:alpha="0.9" 
    app:layout_constraintBottom_toBottomOf="parent" 
    app:itemIconTint="@drawable/bottom_nac_icon_color_selector" 
    app:itemTextColor="@drawable/bottom_nac_icon_color_selector" 
    app:menu="@menu/bottom_nav_menu" 
    app:labelVisibilityMode="labeled"
    app:itemLayout="@layout/design_bottom_navigation_item"/>

方法3:全局主题配置(多控件场景)

如果你的应用里有多个BottomNavigationView都需要这个行为,可以在主题中全局配置,避免重复修改每个控件:

<style name="AppTheme" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
    <!-- 你的其他主题属性 -->
    <item name="bottomNavigationStyle">@style/CustomBottomNavigationStyle</item>
</style>

<style name="CustomBottomNavigationStyle" parent="Widget.MaterialComponents.BottomNavigationView">
    <item name="itemLayout">@layout/design_bottom_navigation_item</item>
</style>

优先推荐方法1,因为遵循Material Design的标准高度能保证控件的交互体验符合官方规范;如果有特殊的高度需求,再选择方法2或3就可以解决问题啦。

内容的提问来源于stack exchange,提问作者Honza Rössler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 09:47:43