Android NavigationView主题选定项背景样式

Android NavigationView主题选定项背景样式,android,menu,android-navigationview,Android,Menu,Android Navigationview,我已经为我的应用程序创建了一个黑色的替代主题。我使用的导航栏定义为 <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:fitsSyst

我已经为我的应用程序创建了一个黑色的替代主题。我使用的导航栏定义为

<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:menu="@menu/activity_main_drawer" />

它在菜单中定义了两个可选择的组

<item
    android:id="@+id/sort_item"
    android:title="One">
    <menu>
        <group
            android:id="@+id/menu_group_sort"
            android:checkableBehavior="single">
            <item
                android:id="@+id/nav_sort_new"
                android:title="@string/menu_new" />
            <item
                android:id="@+id/nav_sort_hot"
                android:title="@string/menu_hot" />
            <item
                android:id="@+id/nav_sort_top"
                android:title="@string/menu_top" />
        </group>
    </menu>
</item>

<item
    android:id="@+id/filter_item"
    android:title="Two">
    <menu>
        <group
            android:id="@+id/menu_group_filter"
            android:checkableBehavior="single">
            <item
                android:id="@+id/nav_category_all"
                android:title="@string/menu_all" />
            <item
                android:id="@+id/nav_category_business"
                android:title="@string/menu_business" />
            <item
                android:id="@+id/nav_category_technology"
                android:title="@string/menu_technology" />
            <item
                android:id="@+id/nav_category_politics"
                android:title="@string/menu_politics" />
        </group>
    </menu>
</item>

通常,所选项目的文本为colorPrimary,背景为某种Android灰色。当我定义我的新主题时,我就这样使用它

<!-- Dark theme. -->
<style name="AppTheme.Dark" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/colorPrimaryInverse</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDarkInverse</item>
    <item name="colorAccent">@color/colorAccentInverse</item>
    <item name="android:textColor">@color/textColorPrimaryInverse</item>
    <item name="android:textColorPrimary">@color/textColorPrimaryInverse</item>
    <item name="android:textColorSecondary">@color/textColorSecondaryInverse</item>
    <item name="android:textColorPrimaryInverse">@color/textColorPrimary</item>
    <item name="android:textColorSecondaryInverse">@color/textColorSecondary</item>
    <item name="android:background">@color/colorPrimaryInverse</item>

    <item name="colorControlHighlight">@color/colorAccentInverse</item>
</style>

@颜色/原色反转
@色彩
@颜色/颜色反转
@颜色/文本颜色主反转
@颜色/文本颜色主反转
@颜色/文本颜色二次反转
@颜色/文本颜色主
@颜色/文本颜色辅助
@颜色/原色反转
@颜色/颜色反转
这几乎是可行的,除了NavigationView中当前选定的项目外,所有内容都按照我的要求进行了样式设置。相反,它看起来只是一个colorPrimary的实心块(没有图标,没有文本),末端是colorControlHighlight,但仅此而已


有人知道如何在NavigationView菜单中自定义选定项吗?我已经尝试了我能想到的每一种状态,但都没有成功。

你不必为这一个自定义样式,你可以将a设置为
导航视图
应用程序:itemTextColor


示例:

导航视图:


这是它将如何处理的:

感谢您的回复!这确实修复了文本颜色,但是图标仍然没有出现在文本旁边(对所有未选择的项目都是如此)。@automaton尝试将此属性设置为NavigationDrawer:
app:itemBackground=“@android:color/transparent”
。如果这不起作用,你能在更改所选项目的地方发布代码吗?另外,看看这个问题,它可能也会有帮助:这个问题看起来是正确的答案,但是如果你将“android:background”设置为你的风格的一部分,出于某种原因它似乎不起作用。实际上,这个链接确实起作用,但它的目标必须如下:@drawable/drawer\u list\u selector\u inverse
<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="@color/nav_state_list"
    app:headerLayout="@layout/nav_header_drawer"
    app:menu="@menu/activity_drawer_drawer" />
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- Item checked -->
    <item android:color="#313189" android:state_checked="true" />
    <!-- Item pressed -->
    <item android:color="#318931" android:state_pressed="true" />
    <!-- Item default -->
    <item android:color="#893131" />
</selector>