Android NavigationView: сокращение пробела между значком и текстом и `itemBackground` не работает

Есть ли способ уменьшить пространство между значком и текстом в NavigationView, когда он создан с помощью меню xml?

Я попытался использовать app:itemTextAppearance атрибут app:itemTextAppearance и это не работает, я пробовал устанавливать дополнения и поля и ничего не работает.

Кроме того, когда я устанавливаю app:itemBackground и устанавливаю проверенное состояние, весь элемент меню не выделяется, я получаю что-то вроде изображения ниже.

Введите описание изображения здесь

itemBackground используемый для создания itemBackground :

 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@color/white_alpha_10" /> <item android:state_checked="true" android:drawable="@color/white_alpha_10" /> <item android:state_focused="true" android:drawable="@color/white_alpha_10" /> <item android:state_activated="true" android:drawable="@color/white_alpha_10" /> <item android:drawable="@android:color/transparent" /> </selector> 

Любая идея, что может продолжаться? Понятно, что в пункте меню есть цвет фона, однако меню xml является довольно стандартным.

NavigationView возвращает фиолетовый фон на нем, заданный из темы:

 <!--Activity xml --> <android.support.design.widget.NavigationView android:id="@+id/nav_view" android:layout_width="wrap_content" android:layout_height="match_parent" android:fitsSystemWindows="true" android:layout_gravity="start" app:theme="@style/AppTheme.NavigationView" app:menu="@menu/menu_nav_drawer" app:itemBackground="@drawable/nav_drawer_item" app:headerLayout="@layout/nav_header"/> <!-- styles.xml --> <style name="AppTheme.NavigationView" parent="Widget.Design.NavigationView"> <item name="android:background">@color/charcoal_new</item> <item name="itemIconTint">@color/nav_drawer_icon</item> <item name="android:listDivider">@color/dusk_alpha_50</item> <item name="itemTextAppearance">@style/NavigationViewTextAppearance</item> </style> <style name="NavigationViewTextAppearance" parent="TextAppearance.Body.Regular"> <item name="android:textColor">@color/white</item> <item name="android:padding">0dp</item> <item name="android:layout_margin">0dp</item> </style> 

Я использую Android support / design library 23.2.1.

    После рытья через источник. Я обнаружил, что вы можете переопределить ресурс измерения, чтобы исправить это.

    <dimen tools:override="true" name="design_navigation_icon_padding">16dp</dimen>

    Остерегайтесь, что это повсеместно изменит ресурс измерения! Вы также можете скопировать файл макета и переопределить его, а не design_navigation_menu.xml

    Что касается разных краев цвета, я устанавливаю app:itemBackground="@android:color/transparent" а затем в теме для набора NavigationView:

    <item name="selectableItemBackground">@drawable/nav_drawer_item_selector</item>

    Вы можете обрабатывать обе темы для своего навигационного элемента следующим образом:

      <item name="selectableItemBackground">@drawable/nav_drawer_item_selector</item> <item name="itemBackground">@color/transparent</item> 

    Nav_drawer_item_selector.xml выглядит так:

     <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@color/white_alpha_10" /> <item android:state_checked="true" android:drawable="@color/white_alpha_10" /> <item android:state_focused="true" android:drawable="@color/white_alpha_10" /> <item android:state_activated="true" android:drawable="@color/white_alpha_10" /> <item android:drawable="@color/transparent" /> </selector> 

    Просто добавьте эту строку в файл dimen.xml

     <dimen tools:override="true" name="design_navigation_icon_padding">10dp</dimen> 

    Это приведет к переопределению дополнения NavigationView

    Intereting Posts