2015-11-27 6 views
9

Есть ли способ изменить цвет товара программно выбранного объекта
в ящике для навигации?
Я могу использовать приложение: itemTextColor, но проблема в том, что я использовал это,
проверенное в пункте меню не выделяется.NavigationView (Изменить цвет выбранного элемента)

<?xml version="1.0" encoding="utf-8"?> 
<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_black_24dp" 
      android:title="Home" /> 
     <item 
      android:id="@+id/nav_search" 
      android:icon="@drawable/ic_search_black" 
      android:title="Search Location" /> 
     <item 
      android:id="@+id/nav_fav" 
      android:icon="@drawable/ic_favorite" 
      android:title="Favorites" /> 
     <item 
      android:id="@+id/nav_route" 
      android:icon="@drawable/ic_place" 
      android:title="Route" /> 

     <item 
      android:id="@+id/nav_recent" 
      android:icon="@drawable/ic_nav_route" 
      android:title="Recent Location" /> 
    </group> 

    <item android:title="Others"> 
     <menu> 
      <item 
       android:id="@+id/nav_settings" 
       android:checked="true" 
       android:checkable="true" 
       android:icon="@drawable/ic_settings" 
       android:title="Settings" /> 
      <item 
       android:id="@+id/nav_about" 
       android:icon="@android:drawable/ic_menu_send" 
       android:title="About" /> 
     </menu> 
    </item> 
</menu> 
+0

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

+0

Ну. что не отвечает на мой вопрос. Извините, но я хочу придерживаться NavigationView –

+1

, возможно, этот ответ полезен для u http://stackoverflow.com/questions/30886453/change-the-color-of-a-checked-menu-item-in-a-navigation -drawer – Tony

ответ

23

создать селектор

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

и установить

app:itemBackground="@drawable/nav_view_item_background" 

, то выбранный элемент будет выделен.

, если вы хотите изменить цвет текста установите

app:itemTextColor="@drawable/nav_view_item_textcolor" 

и создать селектор для него, как

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
     <item android:color="@android:color/white" android:state_checked="true" /> 
    <item android:color="@color/primary" /> 
</selector> 
+4

Это также сработало для меня, стоит отметить, что 'app: itemTextColor' следует применять к' VSG24

0

Примечание: ответ Яшода не работал для меня, что верно в большинстве случаев.

Хотя я установил state_checked, это true и придать ему яркий цвет, кажется, что элемент никогда не проверяется.

Для получения дополнительной информации я обнаружил, что проблема произошла с пунктом меню. Я не дал проверенному элементу true в пункте меню в файле меню.

Затем я должен добавить к нему тег android:checkable=true.

и работает как шарм.

+0

Нет, нет, после того, как вы нажмете на элемент, который НИКОГДА не изменился до исходного цвета. – iBEK

Смежные вопросы