私は Android 開発の初心者です。Android のデフォルトのナビゲーション ドロワー アクティビティを使用してアプリケーションを開発しています。このアプリの要件の 1 つは、実行時にレイアウトの背景色 (ナビゲーション ドロワー ヘッダーの色を含む) をランダムに変更することです。
ナビゲーションドロワーで選択したメニュー項目の色を除いて、すべて正常に動作しています。青。 このような :
私が今望んでいるのは、他のレイアウトの背景色がピンクなので、ナビゲーション バーで選択されたメニュー項目もピンク (つまり、テキストの色とアイコンがピンク) になるようにすることです。次のようになります。
実行時に選択したテキストとアイコンの色をランダムに変更する必要があるため、コード内でプログラム的にこれを実現する方法を教えてください。
参考までにメニューの 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_quiz_all"
android:icon="@drawable/ic_public_black_24dp"
android:checked="true"
android:title="All Countries Quiz"/>
<item
android:id="@+id/nav_quiz_bookmarked"
android:icon="@drawable/ic_favorite_black_24dp"
android:title="Favorite Quiz"/>
</group>
<item android:title="Communicate">
<menu>
<item
android:id="@+id/nav_rate"
android:icon="@drawable/ic_star_black_24dp"
android:title="Rate this app"/>
<item
android:id="@+id/nav_share"
android:icon="@drawable/ic_share_black_24dp"
android:title="Share"/>
<item
android:id="@+id/nav_feedback"
android:icon="@drawable/ic_feedback_black_24dp"
android:title="Feedback"/>
<item
android:id="@+id/nav_about"
android:icon="@drawable/ic_info_black_24dp"
android:title="About"/>
</menu>
</item>
<item
android:id="@+id/nav_settings"
android:icon="@drawable/ic_settings_black_24dp"
android:title="Settings"/>
</menu>
ベストアンサー1
まず、以下のNavigationViewを確認してください
<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/white"
app:itemIconTint="@drawable/drawer_item_color"
app:itemTextColor="@drawable/drawer_item_color"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/activity_main_drawer" />
ここで2つのことを確認してください
app:itemIconTint="@drawable/drawer_item_color"
app:itemTextColor="@drawable/drawer_item_color"
これら両方のタグは、drawer_item_color.xml
drawableフォルダ内のセレクタを使用しており、以下はそのコードです。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/pink" android:state_checked="true" />
<item android:color="@color/black" />
</selector>
セレクターを使用して、必要な色を追加します。これで作業は完了です。