我的应用程序中有一个选项菜单,其中有六个以上的项目,因此有一个“更多”项目可显示溢出菜单。该菜单由默认菜单触发器和调用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,现在突然之间,菜单项溢出了菜单变得不可见。
溢出菜单仍然会发布,并且大小仍然正确,并且菜单项仍然有效。您只是再也看不到它们了:整个菜单现在是纯黑色,这是正常的背景色;菜单项文本丢失。
我正在测试的手机是运行Android 8.1.0的Motorola G5。这是我目前唯一可用API 26进行测试的设备,至少直到我弄清楚如何使用API> = 26创建AVD为止。
在具有API级别8图像的Android模拟器中,溢出菜单仍然看起来不错。在我定位到API 26之前,它在Moto G5上也看起来还不错。如果我将目标改回8,则溢出菜单将再次起作用。
对我可以解决此问题有何想法?我的Google技能不适用于此技能...任何想法都将受到欢迎!
答案 0 :(得分:1)
我将此样式文件添加为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属性从AndroidManifest.xml中的@android:style / Theme.NoTitleBar更改为@ style / Free42Theme来指定;第二个是通过将setTheme(android.R.style.Theme_NoTitleBar_Fullscreen)调用更改为setTheme(R.style.Free42Theme_Fullscreen)在Java代码中设置的全屏主题。
这会将溢出菜单的背景更改为白色,从而使黑色项目文本可见,并在我的G5上进行了验证。在具有Android 2.2(API级别8)的模拟器中运行,外观从一开始就是白色的,因此外观没有变化。
非常感谢SteelToe让我走上正轨!