تغییر رنگ عناوین در Navigation Drawer Menu

زمان مطالعه: 2 دقیقه

با سلام، 

خب برای رنگ دادن به آیتم ها Navigation main drawer روش به این صورت هست که داخل فایل xml همانند زیر رنگ رو تغییر بدیم:

<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"
        android:background="@color/main_background_color"
        app:itemIconTint="@color/nav_font"
        app:itemTextColor="@color/nav_font"
        app:headerLayout="@layout/nav_header_main"
        app:menu="@menu/activity_main_drawer" />

به مقدار itemTextColor باید رنگ مورد نظر خودمون رو بدیم، اما با این تغییرات رنگ آیتم هایی که کلیک پذیر هستن تغییر میکنند ولی رنگ آیتم هایی که صرفا عنوان حساب میشن تغییر نمی کنند، شکل زیر نشون داده که رنگ کدوم موارد تغییر نیم کند:

حال برای تغییر رنگ اون قسمت باید مراحل زیر طی بشه:

داخل style یه استایل جدید باید بسازیم:

<style name="MenuTextStyle">
        <item name="android:textColor">#FF0000</item>
        <item name="android:textSize">20sp</item>
    </style>

حال برای هر کدوم از اون عناوین که رنگشون تغییر نمیکنه باید یه id تعریف کنیم ()،

<item android:title="Communicate"
    android:id="@+id/comunicate_menu">
    <menu>
        <item
            android:id="@+id/nav_contacts"
            android:icon="@drawable/menu_contacts_64_1"
            android:title="Contacts" />
        <item
            android:id="@+id/nav_invite"
            android:icon="@drawable/menu_invite_64_1"
            android:title="invite ..." />
    </menu>
</item>
<item android:title="App"
    android:id="@+id/app_menu">
    <menu>
        <item
            android:id="@+id/nav_setting"
            android:icon="@drawable/menu_setting_64_1"
            android:title="Setting" />
        <item
            android:id="@+id/nav_log"
            android:icon="@drawable/menu_faq_64_1"
            android:title="FAQ" />
    </menu>
</item>

حالا نوبت به استفاده از style تعریف شده برای عناوین مورد نظر میرسه، داخل mainActivity کد های زیر رو اضافه یا تغییر می دیم:

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);

Menu menu = navigationView.getMenu();

MenuItem comunicate= menu.findItem(R.id.comunicate_menu);
SpannableString s = new SpannableString(comunicate.getTitle());
s.setSpan(new TextAppearanceSpan(this, R.style.MenuTextStyle), 0, s.length(), 0);
comunicate.setTitle(s);

MenuItem app= menu.findItem(R.id.app_menu);
SpannableString s_app = new SpannableString(app.getTitle());
s_app.setSpan(new TextAppearanceSpan(this, R.style.MenuTextStyle), 0, s_app.length(), 0);
app.setTitle(s_app);

navigationView.setNavigationItemSelectedListener(this);

اینم از نتیجه:

 

افکار خود را به اشتراک گذارید