2017-05-31 147 views
0

我已经创建了一个带有菜单的导航抽屉布局。我想改变背景,但似乎我不能这样做。我已经试过这里给出,例如创建可绘制nav_bg.xml解决方案:如何更改android导航抽屉的菜单背景

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_checked="true" android:drawable="@color/black_text"/> 
    <item android:state_checked="false" android:drawable="@color/grey_55"/> 
</selector> 

,我用这个可绘制在NavigationView布局XML:

app:itemBackground = "@drawable/nav_bg.xml" 

但是当我运行的应用程序,它只是告诉我@ color/grey_55颜色,当我按下它时它不会改变。

+0

何处以及如何到底有没有可以用这个方法绘制? – azizbekian

+0

所以你真正想知道的是,如何为所选/活动菜单项设置不同的背景颜色? – Ridcully

+0

请检查我的答案,并询问我是否有任何疑问 –

回答

0

最简单的方法

创建绘制让利的.xml项说nav_checked_item_selector.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:drawable="@drawable/nav_checked_item" android:state_checked="true"/> 
</selector> 

托运物品背景表示创建第二绘制让说nav_checked_item.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> 
<solid android:color="#6633b5e5"/> 
</shape> 

现在向您的NavigationView布局添加应用:itemBackground =“@ drawable/nav_checked_item_selector”。

+0

我试过了,它不起作用 – VincentTheonardo

+0

请您将@ color/black_text和@ color/grey_55和NavigationLayout代码在你的XML,所以我得到一些提示? – Abhishek

+0

我试图重新创建我的颜色xml到像你的可绘制的XML,现在它的工作。谢谢!! – VincentTheonardo

0

试试这个

打开styles.xml

<!-- Base application theme. --> 
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <!-- Customize your theme here. --> 
    <item name="android:activatedBackgroundIndicator">@drawable/drawer_list_selector 
    </item> 
</style> 

2.在RES /可绘制文件夹中创建** drawer_list_selector.xml文件**

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true"android:drawable="@drawable/light_gray_color"/> 
    <item android:state_activated="true"android:drawable="@drawable/red_color"/> 
    <item android:drawable="@android:color/transparent"/> 
</selector> 

3.在res/draw下能够创建red_color.xml/light_gray_color.xml(或任何其他名称),并添加你想要的十六进制颜色:

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <solid android:color="#C8FF0000"/> 
</shape> 

4-打开项目AndroidManifest.xml中,然后加入Android:主题标签(如果不存在)

<application 
android:theme="@style/AppTheme" > 
+0

不适合搭配:( – VincentTheonardo

1

在你NavigationView补充:

app:itemIconTint="@color/menu_text_color" 
app:itemTextColor="@color/menu_text_color" 
app:itemBackground="@drawable/menu_background_color`" 

在menu_background_color.xml:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:drawable="@android:color/transparent"android:state_checked="false"/> 
<item android:drawable="@color/colorPrimary" android:state_checked="true"/> 
</selector> 

在menu_text_color.xml:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:color="@color/white" android:state_checked="true" /> 
<item android:color="@color/black" android:state_checked="false"/> 
</selector>