Android如何设置导航抽屉中选定项目的背景色?

Android如何设置导航抽屉中选定项目的背景色?,android,Android,在我的应用程序中,我使用导航抽屉创建了侧菜单。我需要根据单击状态更改菜单列表项的背景色。因此,我使用实现了这一点 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_pressed="true" ><color android:color=

在我的应用程序中,我使用导航抽屉创建了侧菜单。我需要根据单击状态更改菜单列表项的背景色。因此,我使用
实现了这一点

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >

    <item android:state_pressed="true" ><color android:color="@color/red"/></item>  
    <item android:state_focused="true"><color android:color="@color/yellow"/></item>
    <item android:state_activated="true"><color android:color="@color/green"/></item>
    <item><color android:color="#ddd"/></item>

</selector>

上述代码运行良好。单击导航抽屉中的某个项目后,背景颜色会根据上述选择器发生变化,导航抽屉也会关闭

但我的问题是,如果我打开导航抽屉菜单项,背景颜色将变为默认颜色。所以我需要为菜单项设置相同的背景色

然后,如果我打开导航抽屉,我的菜单项将变成默认颜色。没有项目的背景色

但我需要根据当前活动设置菜单项的背景色。

背景色仅在导航抽屉关闭时消失

请帮帮我

对不起,我的英语很差

提前谢谢

我的代码:
package com.example.qh_测试;
导入android.content.res.Configuration;
导入android.os.Bundle;
导入android.support.v4.app.ActionBarDrawerToggle;
导入android.support.v4.widget.DrawerLayout;
导入android.support.v7.app.ActionBarActivity;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.view.view;
导入android.webkit.WebView;
导入android.webkit.WebViewClient;
导入android.widget.AdapterView;
导入android.widget.AdapterView.OnItemClickListener;
导入android.widget.ArrayAdapter;
导入android.widget.ListView;
公共类TechPageActivity扩展了ActionBarActivity实现
麦克利克监听器{
私人抽屉布局;
私有列表视图列表视图;
私有字符串[]菜单;
私人诉讼律师;
私有类MyWebViewClient扩展了WebViewClient{
@凌驾
公共布尔值应重写url加载(WebView视图,字符串url){
view.loadUrl(url);
返回true;
}
}
网络视图;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u tech\u页面);
抽屉布局=(抽屉布局)findViewById(R.id.抽屉布局);
DroperListener=new ActionBarDrawerToggle(这是DroperLayout,
R.drawable.ic_抽屉,R.string.drawer_抽屉打开,
右弦抽屉(U关闭){
@凌驾
打开图纸上的公共空白(视图抽屉视图){
//TODO自动生成的方法存根
super.onDrawerOpened(抽屉视图);
}
@凌驾
图纸上的公共空白已关闭(视图抽屉视图){
//TODO自动生成的方法存根
}
};
抽屉布局。设置抽屉布局器(抽屉布局器);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
菜单=getResources().getStringArray(R.array.tech_菜单);
listview=(listview)findViewById(R.id.DroperList);
setAdapter(新的ArrayAdapter(此,
android.R.layout.simple_list_item_single_choice,menu));
setOnItemClickListener(this);
webview=(webview)findViewById(R.id.homeWebView);
webview.getSettings().setJavaScriptEnabled(true);
setWebViewClient(新的MyWebViewClient());
webview.loadUrl(“http://stackoverflow.com/");               
}
@凌驾
后期创建时受保护的空(捆绑包savedInstanceState){
//TODO自动生成的方法存根
super.onPostCreate(savedInstanceState);
drawerListener.syncState();
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(右菜单技术页面,菜单);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
//处理操作栏项目单击此处。操作栏将
//自动处理Home/Up按钮上的点击,只要
//在AndroidManifest.xml中指定父活动时。
int id=item.getItemId();
如果(抽屉链接器.onOptions项目已选定(项目)){
返回true;
}
返回super.onOptionsItemSelected(项目);
}
@凌驾
公共无效OnConfiguration已更改(配置newConfig){
//TODO自动生成的方法存根
super.onConfigurationChanged(newConfig);
DroperListener.onConfiguration已更改(newConfig);
}
@凌驾
public void onItemClick(AdapterView父视图、视图、整型位置、,
长id){
//TODO自动生成的方法存根
选择项目(位置);
//选择item.get(position.setColor(getResources().getColor(“您的颜色”));
开关(位置){
案例0:
webview.loadUrl(“http://stackoverflow.com/");
setItemChecked(位置,true);
抽屉布局。closeDrawer(列表视图);
打破
案例1:
webview.loadUrl(“http://stackoverflow.com/questions");
setItemChecked(位置,true);
抽屉布局;
打破
案例2:
webview.loadUrl(“http://stackoverflow.com/unanswered");
setItemChecked(位置,true);
抽屉布局;
打破
}
}
public void selectItem(内部位置){
//TODO自动生成的方法存根
setItemChecked(位置,true);
设置标题(菜单[位置]);
}
公共无效集合标题(字符串标题){
getSupportActionBar().setTitle(标题);
}
}

检查此示例自定义导航抽屉

内翻舔

  SelectItem.get(position).setColor(getResources().getColor("your color")); 

你可以称这样的人为大都会会员
  SelectItem.get(position).setColor(getResources().getColor("your color")); 
protected void selectItem(int position)
{
    if (mDrawerList != null) {
        mDrawerList.setItemChecked(position, true);
        mDrawerAdapter.setSelected(position);
    }
}