Подтвердить что ты не робот

Меню переполнения TextColor с AppCompat (с помощью Hardware Menu-Key)

У меня проблема с устройствами с отдельным клавишей меню (например, Samsung onces). В некоторых действиях текстовый цвет элементов меню переполнения является белым при открытии с помощью клавиши меню. Открывая переполнение через три точки, цвет текста всегда черный - как и должно быть.

После скриншота, который визуализирует проблему. С левой стороны все хорошо, переполнение было открыто через три точки. С правой стороны меню открывается с помощью клавиши Menu:

picture illustrating the issue

Моя тема:

<style name="AppThemeToolbar" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/primary_color</item>
    <item name="colorPrimaryDark">@color/primary_color_dark</item>
    <item name="colorAccent">@color/accent_color</item>
    <item name="android:textColorPrimary">@android:color/white</item>
    <item name="android:textColorSecondary">@android:color/white</item>

    <item name="windowActionModeOverlay">true</item>
    <item name="actionModeBackground">@color/action_mode_color</item>
    <item name="actionBarPopupTheme">@style/ThemeOverlay.AppCompat.Light</item>
</style>

Примечание: Я использую ту же самую тему в нескольких действиях, хотя в 3 из 5 все в порядке. Это полностью ошеломляет и не имеет смысла.

Итак, в основном возникает вопрос: как я могу это исправить и почему цвет текста в некоторых действиях черный, а в других - белый (в то время как все они используют одну и ту же тему)?


Что я пробовал (нашел в других подобных сообщениях):

  • Настройка panelBackground. Это работает, к сожалению, это не решение для меня, так как цветной текст переключается между черным и белым - так что просто нет хорошего фона, который я мог бы установить.
  • Что не получилось:
    • android:panelTextAppearance
    • textAppearanceSmallPopupMenu
    • textAppearanceLargePopupMenu
    • popupMenuStyle
    • android:actionMenuTextColor и actionMenuTextColor
  • Я не хочу использовать SpannableStrings - подход, кажется, взломан.
4b9b3361

Ответ 1

Наконец нашел решение!

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="actionBarPopupTheme">@style/HardwareOptionMenu</item>
</style>

<style name="HardwareOptionMenu" parent="ThemeOverlay.AppCompat.Dark">
    <item name="android:textColorSecondary">@color/white</item>
    <item name="android:colorBackground">@color/black</item>
</style>

Ответ 2

 <style name="AppThemeLL" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="android:windowActionBar">false</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:colorBackground">@color/white</item>
    <item name="android:textColorSecondary">@color/white</item>
</style>

Этот стиль работал у меня и для активности, в которой вы будете использовать эту тему, расширяйте класс Activity.

Пример:

public class TestActivity extends Activity
{}

Также ваш манифест будет

<activity android:name=".TestActivity"
        android:label="Test"
        android:theme="@style/AppThemeLL"/>

Ответ 3

Я столкнулся с подобной проблемой. Вы можете попробовать это для AppCompat: -

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="actionBarPopupTheme">@style/HardwareOptionMenu</item>
</style>

<style name="HardwareOptionMenu" parent="ThemeOverlay.AppCompat.Dark">
    <item name="android:textColorSecondary">@color/black</item>
    <item name="android:colorBackground">@color/white</item>
</style>