如何调整Android BottomNavigationView中图标之间的间距?
当前导航栏状态:
已尝试网上搜索但未找到有效方法,当前布局代码如下:
<com.google.android.material.bottomnavigation.BottomNavigationView android:id="@+id/navigation" android:layout_width="0dp" android:layout_marginStart="5dp" android:layout_marginEnd="5dp" android:layout_marginBottom="10dp" android:layout_height="59dp" android:background="@drawable/nav_background_curved" android:visibility="visible" app:itemHorizontalTranslationEnabled="false" app:itemIconTint="@android:color/white" app:itemTextColor="@android:color/white" app:labelVisibilityMode="labeled" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:menu="@menu/navigation" />
可行的实现方法
方法1:自定义样式调整内边距
在styles.xml里创建BottomNavigationView的自定义样式,修改itemPaddingHorizontal控制图标左右间距:
<style name="CustomBottomNavStyle" parent="Widget.MaterialComponents.BottomNavigationView"> <item name="itemPaddingHorizontal">16dp</item> <!-- 数值越大,图标左右间距越宽 --> </style>
在布局文件里给BottomNavigationView应用这个样式:
<com.google.android.material.bottomnavigation.BottomNavigationView ... style="@style/CustomBottomNavStyle" ... />
方法2:代码动态修改子View边距
如果样式调整达不到预期,可通过代码遍历导航栏子项设置边距:
BottomNavigationView navView = findViewById(R.id.navigation); BottomNavigationMenuView menuView = (BottomNavigationMenuView) navView.getChildAt(0); for (int i = 0; i < menuView.getChildCount(); i++) { View navItem = menuView.getChildAt(i); ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) navItem.getLayoutParams(); // 建议将dp转为px设置,比如20dp转对应px值 params.leftMargin = 24; params.rightMargin = 24; navItem.setLayoutParams(params); }
方法3:调整图标尺寸间接优化间距
如果图标过大导致视觉间距拥挤,可在菜单文件@menu/navigation里给每个菜单项设置合适的图标尺寸:
<item android:id="@+id/nav_home" android:icon="@drawable/ic_home" android:title="首页" android:iconSize="24dp" /> <!-- 缩小图标后,整体间距会更宽松 -->
内容的提问来源于stack exchange,提问作者PranavBykampadi
相关产品推荐
相关产品推荐

