簡體   English   中英

導航查看所選項目的顏色

[英]NavigationView selected item color

我有兩個使用抽屜式布局的布局,並且它們對NavigationView使用相同的代碼,問題是它們之一更改了所選項目的顏色,而另一個卻沒有變化,即使它是相同的完全相同的代碼。 這是xml代碼:

 <android.support.design.widget.NavigationView
    android:id="@+id/navigation_view_passager"
    android:layout_width="300dp"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    app:headerLayout="@layout/header"
    app:menu="@menu/menu_passager"  />

和Java用於第一種布局:

    @Override
public boolean onNavigationItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.acceuil_passager_item:
            toolbar.setTitle("Accueil");
            fm.beginTransaction().replace(R.id.frame_passager, new AcceuilPassagerFragment()).commit();
            break;

        case R.id.profile_item:
            toolbar.setTitle("Profil");
            fm.beginTransaction().replace(R.id.frame_passager, new PassagerProfileFragment()).commit();
            break;

        case R.id.historique_voyages_item_pass:
            toolbar.setTitle("Historique des voyages");
            fm.beginTransaction().replace(R.id.frame, new ListeTrajetsFragment()).commit();
            break;
        case R.id.futurs_voyages_item_pass:
            toolbar.setTitle("Futurs voyages");
            fm.beginTransaction().replace(R.id.frame_passager, new FutursVoyagesFragment()).commit();
            break;
        case R.id.log_out_item_pass:
            Intent intent = new Intent(PassagerActivity.this, LoginActivity.class);
            startActivity(intent);
            mAuth.signOut();
            finish();
            Log.d(TAG, "onNavigationItemSelected: " + (mAuth == null));
            break;

        default:
            break;
    }
    drawerLayout.closeDrawer(GravityCompat.START);
    return true;
}

和第二個布局的Java代碼:

    @Override
public boolean onNavigationItemSelected(MenuItem item) {
    switch (item.getItemId()) {

        case R.id.acceuil_item_conducteur:
            setUpToolbar(item);
            fm.beginTransaction().replace(R.id.frame_conducteur, new AcceuilConducteurFragment()).commit();
            break;

        case R.id.profile_item_cond:
            setUpToolbar(item);
            fm.beginTransaction().replace(R.id.frame_conducteur, new ConducteurProfileFragment()).commit();
            break;

        case R.id.historique_voyages_item_cond:
            setUpToolbar(item);
            fm.beginTransaction().replace(R.id.frame_conducteur, new HistoriqueVoyagesFragment()).commit();
            break;

        case R.id.log_out_item_cond:
            Intent intent = new Intent(ConducteurActivity.this, LoginActivity.class);
            startActivity(intent);
            mAuth.signOut();
            finish();
            Log.d(TAG, "onNavigationItemSelected: " + (mAuth == null));
            break;
        default:
            break;
    }
    drawer.closeDrawer(GravityCompat.START);
    return true;
}

這是第一個布局

和第二個

ps:在兩個布局中均選擇了“配置文件”

對於導航視圖,您必須編寫一個顏色選擇器,例如: nav_view_item_background

<selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:drawable="@color/primary" android:state_checked="true" />
        <item android:drawable="@android:color/transparent" />
</selector>

並設置app:itemBackground="@drawable/nav_view_item_background"

對於文本顏色,您必須做同樣的事情。 創建一個textColor選擇器並設置app:itemTextColor

對於“抽屜布局”, return true (在“導航”選項中),更改顏色和選擇。

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">

<group
    android:id="@+id/menu_grp"
    android:checkableBehavior="single">

原來checkableBehavior =“ single”是使菜單選擇項處於選中狀態的原因,而我的其他布局中缺少的內容

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM