Android汉堡菜单左侧不应有内边距,如何移除该内边距?
移除Android汉堡菜单左侧内边距的解决方案
以下是几种针对汉堡菜单左侧内边距无法通过常规margin/padding属性消除的解决方案:
- 覆盖Toolbar的默认内容内边距
Toolbar的AppCompat实现默认会给导航图标添加左侧内边距,需要使用app命名空间的属性来覆盖:
<androidx.appcompat.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:contentInsetLeft="0dp" app:contentInsetStart="0dp" app:contentInsetStartWithNavigation="0dp" />
其中contentInsetStartWithNavigation是专门针对导航图标生效的属性,必须设置。
- 通过代码强制调整内边距
如果布局属性不生效,可在Activity/Fragment的代码中直接设置Toolbar的内容内边距:
// Kotlin示例 toolbar.setContentInsetsAbsolute(0, 0) toolbar.setNavigationIcon(R.drawable.ic_hamburger)
// Java示例 toolbar.setContentInsetsAbsolute(0, 0); toolbar.setNavigationIcon(R.drawable.ic_hamburger);
- 检查自定义汉堡矢量图的空白区域
打开你的汉堡图标矢量图文件,确认<vector>的viewport设置和path路径是否包含左侧多余空白。若矢量图本身有空白,需调整path的坐标或使用Vector Asset Studio重新生成图标。示例无空白的汉堡矢量图:
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24" android:tint="?attr/colorOnPrimary"> <path android:fillColor="@android:color/white" android:pathData="M3,18h18v-2L3,16v2zM3,13h18v-2L3,11v2zM3,6v2h18L21,6L3,6z"/> </vector>
- 修改Toolbar的主题样式
在styles.xml中定义自定义Toolbar样式,全局覆盖默认内边距:
<style name="CustomToolbar" parent="Widget.AppCompat.Toolbar"> <item name="contentInsetLeft">0dp</item> <item name="contentInsetStart">0dp</item> <item name="contentInsetStartWithNavigation">0dp</item> </style>
然后在Toolbar布局中引用该样式:
<androidx.appcompat.widget.Toolbar ... style="@style/CustomToolbar" />
内容的提问来源于stack exchange,提问作者Jim Clermonts
相关产品推荐
相关产品推荐

