Android Bottom NavigationView高度异常问题求助
你遇到的问题源于Material Design的BottomNavigationView默认带有内置内边距和最小高度限制:
- 设置
wrap_content时,会保留这些默认间距,导致整体高度超出预期 - 直接强制设为
?attr/actionBarSize,会因高度不足挤压内部图标和文字
下面是几种可行的解决方法:
方法1:使用Material库的标准高度属性
Material组件库专门为BottomNavigationView定义了标准高度属性,既能符合设计规范,高度也和ActionBar接近:
<com.google.android.material.bottomnavigation.BottomNavigationView android:id="@+id/bottom_nav" android:layout_width="match_parent" android:layout_height="?attr/bottomNavigationBarHeight" app:labelVisibilityMode="selected" app:menu="@menu/bottom_nav_menu" />
方法2:自定义调整内边距与元素大小
如果需要完全匹配ActionBar高度,可以手动减小上下内边距,同时调整图标和文字尺寸,让内容正常显示:
<com.google.android.material.bottomnavigation.BottomNavigationView android:id="@+id/bottom_nav" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:paddingTop="4dp" android:paddingBottom="4dp" app:labelVisibilityMode="selected" app:menu="@menu/bottom_nav_menu" app:itemIconSize="24dp" app:itemTextSize="12dp" />
方法3:优化整体布局结构(针对你的布局)
你当前布局给FragmentContainerView设置了固定400dp高度,容易导致空间分配不合理。建议改用layout_weight让中间区域自适应剩余空间:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".AppInstalledCheckActivity" android:background="#FFEB3B"> <EditText android:id="@+id/edittextPackageName" android:layout_width="match_parent" android:layout_height="60dp" android:hint="Enter Package Name" /> <Button android:id="@+id/buttonCheckInstalled" android:layout_width="match_parent" android:layout_height="45dp" android:text="Enter Package Name" /> <androidx.fragment.app.FragmentContainerView android:id="@+id/nav_host_fragment" android:name="androidx.navigation.fragment.NavHostFragment" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" app:navGraph="@navigation/navgraph" /> <com.google.android.material.bottomnavigation.BottomNavigationView android:id="@+id/bottom_nav" android:layout_width="match_parent" android:layout_height="?attr/bottomNavigationBarHeight" app:labelVisibilityMode="selected" app:menu="@menu/bottom_nav_menu" /> </LinearLayout>
内容的提问来源于stack exchange,提问作者CodingDevil
相关产品推荐
相关产品推荐

