Как изменить цвет значка 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».