图标和 NavigationView 之间的左边距
Left margin between icons and NavigationView
我必须在图标和 NavigationView
之间添加左边距,如下图中的箭头所示:
我知道根据 google 规范,这个边距必须 16dp
但我需要更改它。我试过:
<dimen tools:override="true" name="design_navigation_icon_padding">64dp</dimen>
<dimen tools:override="true" name="design_navigation_separator_vertical_padding">20dp</dimen>
但还是不行。有什么想法吗?
该项目的 xml 布局是 design_navigation_item.xml
<android.support.design.internal.NavigationMenuItemView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="?attr/listPreferredItemHeightSmall"
android:paddingLeft="?attr/listPreferredItemPaddingLeft"
android:paddingRight="?attr/listPreferredItemPaddingRight"
android:foreground="?attr/selectableItemBackground"
android:focusable="true"/>
如您所见,应用的填充取自 activity 的主题 - listPreferredItemPaddingLeft
和 listPreferredItemPaddingRight
。因此,您必须将自定义主题应用到 NavigationView
并用必要的值覆盖这些属性。
在styles.xml
中:
<style name="MyNavigationViewItemStyle" parent="AppTheme">
<item name="listPreferredItemPaddingLeft">0dp</item>
<item name="listPreferredItemPaddingRight">0dp</item>
</style>
我们只想改变activity主题的这两个属性,因此我们扩展了主题,应用于activity .
布局中xml
:
<android.support.design.widget.NavigationView
...
app:theme="@style/MyNavigationViewItemStyle"/>
结果
对于我的情况,我在 xml 中添加了一行:app:itemHorizontalPadding="@dimen/horizontal_padding_on_nav_drawer"
<android.support.design.widget.NavigationView
android:id="@+id/navigation_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="@android:color/white"
android:clipToPadding="false"
android:paddingBottom="@dimen/space48"
app:headerLayout="@layout/layout_nav_header"
app:insetForeground="@color/black"
app:itemBackground="@drawable/background_selected_menu"
**app:itemHorizontalPadding="@dimen/horizontal_padding_on_nav_drawer"**
app:menu="@menu/drawer">
我必须在图标和 NavigationView
之间添加左边距,如下图中的箭头所示:
我知道根据 google 规范,这个边距必须 16dp
但我需要更改它。我试过:
<dimen tools:override="true" name="design_navigation_icon_padding">64dp</dimen>
<dimen tools:override="true" name="design_navigation_separator_vertical_padding">20dp</dimen>
但还是不行。有什么想法吗?
该项目的 xml 布局是 design_navigation_item.xml
<android.support.design.internal.NavigationMenuItemView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="?attr/listPreferredItemHeightSmall"
android:paddingLeft="?attr/listPreferredItemPaddingLeft"
android:paddingRight="?attr/listPreferredItemPaddingRight"
android:foreground="?attr/selectableItemBackground"
android:focusable="true"/>
如您所见,应用的填充取自 activity 的主题 - listPreferredItemPaddingLeft
和 listPreferredItemPaddingRight
。因此,您必须将自定义主题应用到 NavigationView
并用必要的值覆盖这些属性。
在styles.xml
中:
<style name="MyNavigationViewItemStyle" parent="AppTheme">
<item name="listPreferredItemPaddingLeft">0dp</item>
<item name="listPreferredItemPaddingRight">0dp</item>
</style>
我们只想改变activity主题的这两个属性,因此我们扩展了主题,应用于activity .
布局中xml
:
<android.support.design.widget.NavigationView
...
app:theme="@style/MyNavigationViewItemStyle"/>
结果
对于我的情况,我在 xml 中添加了一行:app:itemHorizontalPadding="@dimen/horizontal_padding_on_nav_drawer"
<android.support.design.widget.NavigationView
android:id="@+id/navigation_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="@android:color/white"
android:clipToPadding="false"
android:paddingBottom="@dimen/space48"
app:headerLayout="@layout/layout_nav_header"
app:insetForeground="@color/black"
app:itemBackground="@drawable/background_selected_menu"
**app:itemHorizontalPadding="@dimen/horizontal_padding_on_nav_drawer"**
app:menu="@menu/drawer">