使用AppCompat溢出菜单textColor(使用Hardware Menu-Key)

时间:2015-07-13 13:43:00

标签: android android-appcompat

我在带有单独菜单键的设备上遇到问题(比如Samsung onces)。 在某些活动中,通过菜单键打开时,“溢出菜单项”的文本颜色为白色。通过三个点打开溢出,文本颜色始终是黑色的 - 就像它应该的那样。

按照屏幕截图显示问题。在左侧,一切都很好,通过三个点打开溢出。在右侧,菜单已通过菜单键打开:

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>

注意:我在多个活动中使用完全相同的主题,但在五分之三中一切都很好。 这完全令人难以置信,并没有任何意义。

所以基本上问题是:我如何解决这个问题?为什么某些活动中的textcolor会变黑,而其他活动中的textcolor会变白(而他们都使用相同的主题)?

我尝试过的(在其他类似帖子中找到):

  1. 设置panelBackgroundThis works,遗憾的是,这对我来说不是一个解决方案,因为文本颜色随意切换为黑色和白色 - 因此我无法设置好背景颜色。
  2. 什么行不通:
    • android:panelTextAppearance
    • textAppearanceSmallPopupMenu
    • textAppearanceLargePopupMenu
    • popupMenuStyle
    • android:actionMenuTextColor&amp; actionMenuTextColor
  3. 我不想使用SpannableStrings - approach似乎hacky

3 个答案:

答案 0 :(得分:2)

终于找到了解决方案!

<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>

答案 1 :(得分:0)

 <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"/>

答案 2 :(得分:0)

我遇到了类似的问题。您可以尝试使用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>