2017-01-24 3 views
1

В моем ящике навигации мой значок списка выглядит так: check image. Таким образом, это означает, что я наложил значок на задний план.set background of Navigation Drawer icon

Я знаю, что через макет рамки, я могу поставить значок на изображении, но я запутался, как я могу это сделать, когда он объявлен в res/menu папки

menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <group android:checkableBehavior="single"> 
      <item 
      android:id="@+id/nav_home" 
      android:icon="@drawable/ic_home_white_24dp" 
      android:title="@string/nav_item_home" /> 

     <item 
      android:id="@+id/appointment_history" 
      android:icon="@drawable/appointment_icon" 
      android:title="@string/nav_history" /> 
     <item 
      android:id="@+id/contact_us" 
      android:icon="@drawable/contact_us_icon" 
      android:title="@string/nav_contact_us" /> 

     <item 
      android:id="@+id/nav_settings" 
      android:icon="@drawable/setting_icon" 
      android:title="@string/nav_setting" /> 
    </group> 
</menu> 

new Image

Style.xml

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <!-- Customize your theme here. --> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorAccent</item> 

</style> 
<style name="RatingBar" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="colorControlNormal">#00BFF3</item> 
    <item name="colorControlActivated">#00BFF3</item> 
</style> 
<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar"> 
    <item name="android:windowBackground">@drawable/background_splash</item> 
</style> 

<style name="MyCustomToolBarTheme" parent="ThemeOverlay.AppCompat.Light"> 
    <item name="android:textColorPrimary">@color/colorAccent</item> 


</style> 

<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" /> 

<style name="MyMaterialTheme" parent="MyMaterialTheme.Base"> 

</style> 

<style name="MyMaterialTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="windowNoTitle">true</item> 
    <item name="windowActionBar">false</item> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorAccent</item> 
</style> 

v21

<style name="MyMaterialTheme" parent="MyMaterialTheme.Base"> 
    <item name="android:windowContentTransitions">true</item> 
    <item name="android:windowAllowEnterTransitionOverlap">true</item> 
    <item name="android:windowAllowReturnTransitionOverlap">true</item> 
    <item name="android:windowSharedElementEnterTransition">@android:transition/move</item> 
    <item name="android:windowSharedElementExitTransition">@android:transition/move</item> 
</style> 

ответ

1

Прежде всего, необходимо установить значок оттенок обнулить.

navigationView.setItemIconTintList(null); 

Тогда вы можете создать XML вытяжке, как это, в этом примере я буду называть его rounded_corner_home.

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item > 
    <shape android:shape="rectangle"> 
     <solid android:color="#007f12" /> 
     <corners android:radius="4dp" /> 
    </shape> 
    </item> 
    <item> 
     <bitmap android:src="@drawable/ic_home_white_24dp"/> 
    </item> 
</layer-list> 

Затем вы меняете правильность значка пункта меню.

<item 
    android:id="@+id/nav_home" 
    android:icon="@drawable/rounded_corner_home" 
    android:title="@string/nav_item_home" /> 

Вот скриншот результата: Screen

+0

не работает сэр –

+0

я добавил больше информации и скриншот результата. –

+0

Сэр, ваше soloution частично работает ... на kitkat It отлично работает, но на Lollipop отображается прозрачный фон –

0
Using this code you can change the color of drawer icon : 

o NavigationView (it is located in activity_main.xml layout file) The default tint is black but you can use an even darker shade of black by using #000000 

<android.support.design.widget.NavigationView 
    android:id="@+id/nav_view" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    android:fitsSystemWindows="true" 
    app:headerLayout="@layout/nav_header_main" 
    app:itemIconTint="#000000" 
    app:menu="@menu/activity_main_drawer" /> 
+0

на самом деле им не говорить о значке оттенок, моя забота о значке фон проверить новое изображение пожалуйста –

+0

okkk я проверю. @DhruvTyagi –

+0

Он частично прав, оттенок заставит все иконки иметь только один цвет, и вы хотите, и значок с двумя цветами, но настройка его на белый не поможет. –