选中时 NavigationView 的颜色

NavigationView's color when checked

通常ItemTextColor和ItemIconTint会变成android:colorPrimary然后勾选,但是为什么会变成白色(Theme.AppCompat的原色)而不是我自定义的原色?

style.xml:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:colorPrimary">@color/color_primary</item>
    <item name="android:colorPrimaryDark">@color/color_primary_dark</item>
    <item name="android:colorAccent">@color/color_accent</item>
    <item name="android:statusBarColor">@android:color/transparent</item>
</style>

<color name="color_primary">#3F51B5</color>
<color name="color_primary_dark">#303F9F</color>
<color name="color_accent">#FF4081</color>

activity_main.xml:

<android.support.design.widget.NavigationView
    android:id="@+id/navigation"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:orientation="vertical"
    android:fitsSystemWindows="true"
    app:headerLayout="@layout/layout_drawer"
    app:menu="@menu/menu_drawer" />

AppCompat 主题使用 colorPrimary 和不带 android: 前缀的相关属性。因此,如果您将 style.xml 更改为以下内容,它应该可以工作。 (或者至少,对我来说是这样。)

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/color_primary</item>
    <item name="colorPrimaryDark">@color/color_primary_dark</item>
    <item name="colorAccent">@color/color_accent</item>
    <item name="android:statusBarColor">@android:color/transparent</item>
</style>

<color name="color_primary">#3F51B5</color>
<color name="color_primary_dark">#303F9F</color>
<color name="color_accent">#FF4081</color>