Как изменить цвет значка PopupMenu (Material Design 3) в Android?

Я пытаюсь реализовать в своем приложении, следуя этому примеру . Это работает, но я не могу изменить цвет значка. Как бы я этого добился?

Тем временем я мог бы изменить цвет фона:

      <style name="Theme.MyApp" parent="Theme.Material3.DayNight.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorBackground</item>
    <item name="android:navigationBarColor">@color/colorWhite</item>
    <item name="android:windowBackground">@color/colorBackground</item>

    <item name="popupMenuStyle">@style/Widget.App.PopupMenu</item>

    <item name="colorControlNormal">@color/colorSecondary</item> // <--- This one has no effect
</style>

<style name="Widget.App.PopupMenu" parent="Widget.Material3.PopupMenu">
    <item name="android:popupBackground">@drawable/menu_back</item> // <-- This changes background and it works good.
    <item name="colorControlNormal">@color/colorSecondary</item> // <--- Even placed here still doesn't work
    <item name="android:colorControlNormal">@color/colorSecondary</item> // <-- even with android:
</style>

я использую новыйMaterial Design 3библиотека от Google.

Кроме того, я пытался найти что-то в Интернете, и я мог найти решения только для моей проблемы, касающейсяToolbar, это не мой случай. мне нуженPopupMenuпри нажатии кнопки.

1 ответ

Ранее я искал решение этой проблемы и нашел это решение лучшим (может поддерживаться даже ночной режим)

в вашем файле меню.xml. В следующем примере это меню_items_options.xml.

      <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/menu_share"
        android:title="share"
        android:icon="@drawable/round_ios_share_24"
        app:iconTint="?attr/colorOnSurface"
        />

    <item
        android:id="@+id/menu_select"
        android:title="select"
        android:icon="@drawable/round_select_all_24"
        app:iconTint="?attr/colorOnSurface"
        />

</menu>

добавлять

      app:iconTint="?attr/colorOnSurface"

Вы можете изменить цвет «?attr/colorOnSurface», который вам нужен (и лучше использовать то, что я упомянул), чтобы лучше работать в дневном и ночном режиме.

Примечание: «app:iconTint», а не «android:iconTint».

Другие вопросы по тегам