2015-11-27 240 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

也許這個答案對你有幫助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_checkedtrue並給它一個可繪製的顏色,但似乎該項目從未被檢查。

更多搜索,我發現問題發生在菜單項。我沒有在菜單文件的菜單項中將檢查項目設置爲true。

然後我必須添加標籤android:checkable=true它。

它的作品像魅力。

+0

不,它沒有,單擊後,它永遠不會改回原來的顏色。 – iBEK

相關問題