当定位 API 26 时,溢出菜单项变得不可见

When targeting API 26, overflow menu items become invisible

我的应用程序中有一个选项菜单,其中有六个以上的项目,因此有一个 "More" 项目可以调出溢出菜单。菜单由默认菜单触发器和调用 Activity.openOptionsMenu().

的自定义触发器发布

菜单本身是从这个资源文件构建的:

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/mi_copy"
          android:title="Copy"
          android:icon="@drawable/copy"/>
    <item android:id="@+id/mi_paste"
          android:title="Paste"
          android:icon="@drawable/paste"/>
    <item android:id="@+id/mi_preferences"
          android:title="Preferences"
          android:icon="@android:drawable/ic_menu_preferences"/>
    <item android:id="@+id/mi_flip_calc_printout"
          android:title="Print-Out"
          android:icon="@drawable/printer"/>
    <item android:id="@+id/mi_clear_printout"
          android:title="Clear Print-Out"
          android:icon="@android:drawable/ic_menu_close_clear_cancel"/>
    <item android:id="@+id/mi_about"
          android:title="About Free42"/>
    <item android:id="@+id/mi_import"
          android:title="Import Programs"/>
    <item android:id="@+id/mi_export"
          android:title="Export Programs"/>
</menu>

到目前为止,还不错。菜单和创建和发布它的 Java 逻辑已经工作多年,但现在我根据最新的 Play 要求将 targetSdkVersion 从 API 级别 8 更改为 26,现在所有的突然,溢出菜单中的菜单项变得不可见了。

溢出菜单仍然存在,它的大小仍然正确,菜单项仍然有效。您只是再也看不到它们了:现在整个菜单都是纯黑色,这是正常的背景颜色;菜单项文本丢失。

我正在测试的 phone 是摩托罗拉 G5 运行 Android 8.1.0。这是我目前唯一可以使用 API 26 进行测试的设备,至少在我弄清楚如何使用 API >= 26.

创建 AVD 之前是这样的

N.B。在具有 API 级别 8 图像的 Android 模拟器中,溢出菜单看起来仍然不错。在我将目标设置为 API 26 之前,它在 Moto G5 上看起来也很好。如果我将目标更改回 8,溢出菜单将再次工作。

有什么想法可以解决这个问题吗?我的 Google 技能不适用于此...欢迎提出任何想法!

我将此样式文件添加为 res/values/styles。xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <style name="Free42Theme" parent="android:style/Theme.NoTitleBar">
        <item name="android:itemBackground">@android:color/white</item>
    </style>

    <style name="Free42Theme.Fullscreen" parent="android:style/Theme.NoTitleBar.Fullscreen">
        <item name="android:itemBackground">@android:color/white</item>
    </style>

</resources>

第一个是默认主题,通过将 Activity 上的 android:theme 属性从 @android:style/Theme.NoTitleBar 更改为 @[=21= 来指定] 在 AndroidManifest.xml 中;第二个是全屏主题,在 Java 代码中设置,通过将 setTheme(android.R.style.Theme_NoTitleBar_Fullscreen) 调用更改为 setTheme(R.style.Free42Theme_Fullscreen).

这将溢出菜单的背景更改为白色,使黑色项目文​​本可见,已在我的 G5 上验证。 运行 在 Android 2.2(API 级别 8)的模拟器中,外观没有变化,因为背景从一开始就是白色的。

非常感谢 SteelToe 让我走上正轨!