0

アプリのナビゲーション ドロワーには多くのメニュー項目が含まれています。制限は、ティント カラーのカラー インスタンスを表示するアイテムが 1 つあり、他のアイテムはティントを表示することです。この制限により、カラー フィルターを使用してアイテム ドロワーのアイコン カラー ステージを処理することにしました。このパスは完全に正常に機能します。

で、私のメニューはこんな感じ。

    <item
        android:id="@+id/menu_main"
        android:icon="@drawable/ic_my_logo_24dp"
        android:title="@string/app_name" />
    <item
        android:id="@+id/menu_setting"
        android:icon="@drawable/ic_settings_black_24dp"
        android:title="@string/text_menu_settings" />
    <item
        android:id="@+id/menu_contact_us"
        android:icon="@drawable/ic_markunread_black_24dp"
        android:title="@string/text_menu_contact_us" />
    <item
        android:id="@+id/menu_faq"
        android:icon="@drawable/ic_faq_black_24dp"
        android:title="@string/text_menu_faq" />

メインメニューがこのように色の状態を表示することを期待するすべてのメニュー

選択: 青

未選択: グレー

メインメニュー

選択: 色を表示

未選択: グレー

状態を処理するコードは次のようになります

fun setSelectedMenuItemColor(selectedId: Int) {
  val menu = binding?.navView?.menu
   repeat(menu!!.size()) { i ->
     menu.getItem(i)?.icon?.colorFilter = when {
       menu.getItem(i).itemId == selectedId && selectedId == R.id.menu_main -> null
       menu.getItem(i).itemId == selectedId -> selectedFilterColor
       else -> idleFilterColor!!
     }
  }
}

問題は

imageView を使用し、drawable をメニュー項目の 1 つと同じように設定した場合。メニュー項目に従って色の状態が変化します。imageView の色合いを変更したくありません。ただし、メニューによって変わります。次に、imageViewに色合いを追加して別の薄い色に変更しますが、メニューの同じ色が表示されます。例えば。

<ImageView
   android:tint="@color/black"
   android:src="@drawable/ic_settings_black_24dp" />

この場合、imageView は黒色のみを表示する必要があります。ただし、メニューに応じてグレーまたはブルーに表示されます。

期待される結果は、imageView が XML で設定した色から色を濃くする必要があることです

しかし、その結果、メニュー項目と同じ色合いで表示されます。

私はそれを独立して考えています。誰かがこの問題が発生した理由とそれを修正する方法を説明できますか プロジェクトでデータバインディングとKotlinを使用します

4

2 に答える 2