Изменить цвет меню навигации по умолчанию

Я видел эти вопросы во многих местах, но везде они использовали настраиваемый список в меню навигации.

Мой код для навигации выглядит следующим образом:

<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_insta_drawer"
        app:menu="@menu/activity_insta_drawer_drawer" />

где мой @menu/activity_insta_drawer_drawer выглядит так:

<?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_applnform"
            android:icon="@drawable/application_form"
            android:title="Application Form"
            android:checkable="true"

            />
        <item
            android:id="@+id/nav_penddocs"
            android:icon="@drawable/pending_doc"
            android:title="Pending Documents"

            />
        <item
            android:id="@+id/nav_viewdocs"
            android:icon="@drawable/view_doc"
            android:title="View Documents" />
        <item
            android:id="@+id/nav_payfee"
            android:icon="@drawable/pay_free"
            android:title="Pay Fee" />
         <item
                android:id="@+id/nav_refereedetail"
                android:icon="@drawable/refree_detail"
                android:title="Referee Details" />
         <item
                android:id="@+id/nav_informcorner"
                android:icon="@drawable/information"
                android:title="Information Corner" />
        <item
            android:id="@+id/nav_changepass"
            android:icon="@drawable/change_pass"
            android:title="Change Password" />
        <item
            android:id="@+id/nav_postquery"
            android:icon="@drawable/ic_menu_send"
            android:title="Post Query" />
      </group>
</menu>

код для навигации:

 navigationView = (NavigationView) findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);

Как изменить выбранный пункт меню?


person Parth Anjaria    schedule 02.03.2016    source источник
comment
Вы хотите изменить цвет или установить флажок? Если отмечено, просто используйте метод MenuItem#setChecked. Вы не загрузили свой код Java, поэтому я понятия не имею, как вы используете панель навигации.   -  person OneCricketeer    schedule 02.03.2016
comment
мне нужно показать, что он проверен, и я хочу добавить к нему определенный цвет, до сих пор он работал нормально, теперь вдруг я не знаю, как, но цвет изменился, и поскольку он был по умолчанию, поэтому я не знаю, как изменить его обратно   -  person Parth Anjaria    schedule 02.03.2016
comment
По моему опыту, ничто волшебным образом не меняет цвет. Возможно, вам потребуется определить пользовательский selector drawable для определения цветов отмеченных и непроверенных состояний.   -  person OneCricketeer    schedule 02.03.2016
comment
но где мне это определить? и где я могу добавить этот селектор?   -  person Parth Anjaria    schedule 02.03.2016
comment
Я не знаю, могут ли пункты меню определять селектор, но в обычном View Xml вы бы установили android:background на @drawable/selector и определили бы его в res/drawable   -  person OneCricketeer    schedule 02.03.2016
comment
да, это моя проблема, мы не можем определить селектор или фон для пунктов меню?   -  person Parth Anjaria    schedule 02.03.2016
comment
Вы можете изменить тему приложения с styles.xml, чтобы получить разные цвета фона в целом, но правильно, я не думаю, что отдельные элементы меню могут иметь настраиваемые фоновые рисунки.   -  person OneCricketeer    schedule 02.03.2016
comment
Вы видели вид навигации Gmail? я хочу что-то подобное, или вы также можете увидеть этот вопрос: stackoverflow.com/questions/30967851/   -  person Parth Anjaria    schedule 02.03.2016


Ответы (2)


Попробуйте изменить NavigationView, как показано ниже, добавив app:itemTextColor="@drawable/nav_draw_selector", чтобы изменить цвет текста меню навигации:

<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:itemTextColor="@drawable/nav_draw_selector"
    app:headerLayout="@layout/nav_header_insta_drawer"
    app:menu="@menu/activity_insta_drawer_drawer" />

nav_header_insta_drawer.xml

 <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="#4281ca" android:state_checked="true" />     <!-- This is the default text color -->
    <item android:color="#DEDEDE" />
</selector>
person pRaNaY    schedule 02.03.2016

Наконец, попробовав все, я получил ответ. Вы должны изменить colorAccent в файле цветов на любой цвет, который вы хотите:

  <color name="colorAccent">whichever color required</color>

Это решение сработало для меня

person Parth Anjaria    schedule 02.03.2016
comment
Проголосуйте за свой собственный ответ, если он устранил вашу проблему. так что другие могут использовать его. - person iSrinivasan27; 03.03.2016
comment
ОК @Srinivasan я сделал это - person Parth Anjaria; 04.03.2016