メニュー項目のタイトルColor
の変更に問題がありますNavigation Drawer
itemTextColor
を設定しましたが、メニューのColor
ではなく、アイテムのTitle
のみを変更します。
ここに私のActivity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<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"
app:itemTextColor="#ffffff"
Android:background="#283135"
/>
</Android.support.v4.widget.DrawerLayout>
activity_main_drawer.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:Android="http://schemas.Android.com/apk/res/Android">
<group Android:checkableBehavior="single">
<item
Android:id="@+id/nav_home"
Android:icon="@mipmap/hospital"
Android:title="Home"
/>
<item
Android:id="@+id/nav_reminder"
Android:icon="@mipmap/alarm"
Android:title="Reminders" />
</group>
<item Android:title="Tools">
<menu>
<item
Android:id="@+id/nav_settings"
Android:icon="@mipmap/settings"
Android:title="Settings" />
<item
Android:id="@+id/nav_help"
Android:icon="@mipmap/information"
Android:title="Help" />
<item
Android:id="@+id/nav_about"
Android:icon="@mipmap/team"
Android:title="About Us" />
</menu>
</item>
</menu>
Menu
アイテムを与えるにはtitle
color
およびtextSize
を作成します。
これをstyles.xml
ファイルに追加します。
<style name="TextAppearance44">
<item name="Android:textColor">#FF0000</item>
<item name="Android:textSize">20sp</item>
</style>
activity_main_drawer.xml
ファイルでid
attribute
をtitle
に渡します。
<item Android:title="Tools"
Android:id="@+id/tools">
<menu>
<item
Android:id="@+id/nav_settings"
Android:icon="@mipmap/settings"
Android:title="Settings" />
<item
Android:id="@+id/nav_help"
Android:icon="@mipmap/information"
Android:title="Help" />
<item
Android:id="@+id/nav_about"
Android:icon="@mipmap/team"
Android:title="About Us" />
</menu>
</item>
今MainActivity.Java
ファイルではこの方法を使用します。
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
Menu menu = navigationView.getMenu();
MenuItem tools= menu.findItem(R.id.tools);
SpannableString s = new SpannableString(tools.getTitle());
s.setSpan(new TextAppearanceSpan(this, R.style.TextAppearance44), 0, s.length(), 0);
tools.setTitle(s);
navigationView.setNavigationItemSelectedListener(this);
tools
color
をRed
に、TextSize
を20sp
に変更します。実装します。
私の場合の出力:
Styles.xmlで新しいスタイルを定義することもできます。
<style name="NavigationView">
<item name="Android:textColorSecondary">@color/white</item>
</style>
そして、このスタイルをNavigationViewのテーマに適用します。
<Android.support.design.widget.NavigationView
Android:layout_width="wrap_content"
Android:layout_height="match_parent"
Android:layout_gravity="start"
Android:theme="@style/NavigationView" />
以下のように、ナビゲーションビュータグにapp:itemTextColor="@color/accent
プロパティを追加するだけです。
<com.google.Android.material.navigation.NavigationView
Android:id="@+id/nav_view"
Android:layout_width="wrap_content"
Android:layout_height="match_parent"
Android:backgroundTint="@color/primary"
Android:layout_gravity="start"
Android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/activity_main_drawer"
app:itemTextColor="@color/accent"/>
<style name="AppTheme.NavigationView">
<item name="Android:textColorSecondary">@color/colorPrimaryDark</item>
<item name="Android:textSize">20sp</item>
</style>
タイトルサイズも変更する場合は、textSizeを設定します