使导航中的当前活动项目更改颜色

时间:2017-05-30 04:09:59

标签: android xml navigation-drawer

我试图更改Navigation抽屉菜单的背景颜色。当项目为pressed时,它会变为红色,我想要实现的是点击后它保持红色,因为它是Navigation中的当前活动项目,甚至抽屉也已关闭。

我创建了一个drawable xml,我在这里设置了项目的background(item_bg.xml)' s我的代码

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:drawable="@color/brickred" />
<item android:state_activated="true" android:drawable="@color/brickred" />
<item android:state_active="true" android:drawable="@color/brickred" />
<item android:state_pressed="true" android:drawable="@color/brickred" />
<item android:state_focused="true" android:drawable="@color/brickred" />
</selector>

并将其调用到navigation_activity.xml这样的

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
xmlns:fab="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:openDrawer="start">

<android.support.design.widget.NavigationView
    android:id="@+id/navigationView"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:fitsSystemWindows="true"
    app:menu="@menu/activity_navigation_drawer"
    android:background="@color/tableHeader"
    app:itemBackground="@drawable/item_bg"/>

 </android.support.v4.widget.DrawerLayout>

有关如何实现这一目标的任何建议?谢谢。

我的NavigationActivity看起来像是:

 @SuppressWarnings("StatementWithEmptyBody")
  @Override
   public boolean onNavigationItemSelected(MenuItem item) {
    int id = item.getItemId();
    Intent goToSreen;

    if (id == R.id.nav_dashboard) {
        goToSreen = new Intent(NavigationActivity.this, DashboardActivity.class);
        startActivity(goToSreen);
        navigationView.setCheckedItem(R.id.nav_dashboard);
    } 

但在drawer关闭后,它仍会恢复原来的颜色。

1 个答案:

答案 0 :(得分:2)

我试过这个

navigationView.getMenu().getItem(1).setChecked(true);

检查here