简体   繁体   English

如何为导航抽屉上的不同所选项目设置不同的背景颜色?

[英]How to set different background color for different selected item on Navigation Drawer?

I want to set different background color for the different selected item on Navigation Drawer. 我想为导航抽屉上的不同选定项目设置不同的背景颜色。

Like, for nav_camara it is red, for nav_gallery is blue and so on. 例如,对于nav_camara它是红色,对于nav_gallery ,它是蓝色,依此类推。

My MainActivity code is 我的MainActivity代码是

public class MainActivity extends AppCompatActivity
    implements NavigationView.OnNavigationItemSelectedListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    ft.replace(R.id.main_fragment, new Main());
    ft.commit();


    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);



    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
            this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.setDrawerListener(toggle);
    toggle.syncState();

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);
}

@Override
public void onBackPressed() {
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    if (drawer.isDrawerOpen(GravityCompat.START)) {
        drawer.closeDrawer(GravityCompat.START);
    } else {
        super.onBackPressed();
    }
}


@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
    // Handle navigation view item clicks here.
    int id = item.getItemId();

    if (id == R.id.nav_camara) {
        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
        ft.replace(R.id.main_fragment, new Daily_packs_bl());
        ft.commit();
        getSupportActionBar().setTitle("Daily");
    } else if (id == R.id.nav_gallery) {
        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
        ft.replace(R.id.main_fragment, new HI());
        ft.commit();
        getSupportActionBar().setTitle("HI");

    } else if (id == R.id.nav_slideshow) {
        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
        ft.replace(R.id.main_fragment, new Two());
        ft.commit();
        getSupportActionBar().setTitle("Two");


    }

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    drawer.closeDrawer(GravityCompat.START);
    return true;
}

} }

My Layout files 我的布局文件

<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"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:openDrawer="start">

<include
    layout="@layout/app_bar_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

<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" />

Drawer List 抽屉清单

<?xml version="1.0" encoding="utf-8"?>

<group android:checkableBehavior="single">
    <item
        android:id="@+id/nav_camara"
        android:icon="@android:drawable/ic_menu_camera"
        android:title="Import" />
    <item
        android:id="@+id/nav_gallery"
        android:icon="@android:drawable/ic_menu_gallery"
        android:title="Gallery" />
    <item
        android:id="@+id/nav_slideshow"
        android:icon="@android:drawable/ic_menu_slideshow"
        android:title="Slideshow" />
    <item
        android:id="@+id/nav_manage"
        android:icon="@android:drawable/ic_menu_manage"
        android:title="Tools" />
</group>

<item android:title="Communicate">
    <menu>
        <item
            android:id="@+id/nav_share"
            android:icon="@android:drawable/ic_menu_share"
            android:title="Share" />
        <item
            android:id="@+id/nav_send"
            android:icon="@android:drawable/ic_menu_send"
            android:title="Send" />
    </menu>
</item>

您需要更改您的工作,以便将其用于navigationDrawer中的自定义适配器,其中您的背景根据类别确定

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Android如何为导航抽屉中的选定项目设置背景颜色? - Android how to set the background color for selected item in navigation drawer? 如何在底部导航选项卡的选定项目中添加其他背景颜色? - How to add a different background color to bottom navigation tab selected item? 导航抽屉中具有不同背景颜色的每个菜单项 - Navigation Drawer each menu item with different background color 具有选定背景颜色的导航抽屉项目分隔符 - Navigation Drawer item divider with selected background color 更改导航抽屉中所选项目的背景颜色 - Change background color of selected item in navigation drawer 如何更改导航抽屉中所选项目的背景颜色 - How to change the Background color of selected item in the Navigation Drawer 如何在android导航抽屉中更改所选项目的背景颜色? - How to change the selected item's background color in android navigation drawer? 每个抽屉菜单项的不同背景颜色 - Different background color for each drawer menu item 无法在导航抽屉中更改所选项目的背景颜色 - Can't change selected item's background color in Navigation Drawer 使用“activatedBackgroundIndicator”导航抽屉选择项目的自定义背景颜色 - Custom background color for selected item with “activatedBackgroundIndicator” Navigation Drawer
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM