【问题标题】:Left margin between icons and NavigationView图标和 NavigationView 之间的左边距
【发布时间】:2017-05-11 15:14:38
【问题描述】:

我必须在图标和NavigationView 之间添加一个左边距,如下图箭头所示:

我知道根据谷歌规范,这个边距必须有16dp,但我需要改变它。我试过了:

 <dimen tools:override="true" name="design_navigation_icon_padding">64dp</dimen>
 <dimen tools:override="true" name="design_navigation_separator_vertical_padding">20dp</dimen>

但仍然无法正常工作。有什么想法吗?

【问题讨论】:

标签: java android android-layout android-view navigationview


【解决方案1】:

那个项目的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"/>

如您所见,应用的填充取自活动的主题 - listPreferredItemPaddingLeftlistPreferredItemPaddingRight。因此,您必须将自定义主题应用于NavigationView,并使用必要的值覆盖这些属性。

styles.xml:

<style name="MyNavigationViewItemStyle" parent="AppTheme">
    <item name="listPreferredItemPaddingLeft">0dp</item>
    <item name="listPreferredItemPaddingRight">0dp</item>
</style>

我们希望从活动的主题中更改这两个属性,因此我们正在扩展主题,将其应用于活动。

在布局中xml:

<android.support.design.widget.NavigationView
    ...
    app:theme="@style/MyNavigationViewItemStyle"/>

结果

【讨论】:

    【解决方案2】:

    就我而言,我在 xml 中添加了一行:app:itemHorizo​​ntalPadding="@dimen/horizo​​ntal_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 上工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-02
    • 1970-01-01
    • 2015-11-06
    • 1970-01-01
    • 1970-01-01
    • 2020-06-06
    • 1970-01-01
    相关资源
    最近更新 更多