【问题标题】:Overflow Menu textColor with AppCompat (using Hardware Menu-Key)带有 AppCompat 的溢出菜单 textColor(使用硬件菜单键)
【发布时间】:2016-05-17 18:28:33
【问题描述】:

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

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

我的主题:

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

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

所以基本上问题是:我该如何解决这个问题以及为什么某些活动中的文本颜色是黑色而另一些活动中的文本颜色是白色(虽然它们都使用相同的主题)?


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

  1. 设置panelBackgroundThis works,不幸的是,这对我来说不是一个解决方案,因为 textcolor 在黑白之间随意切换 - 所以我根本无法设置好的背景颜色。
  2. 什么不起作用:
    • android:panelTextAppearance
    • textAppearanceSmallPopupMenu
    • textAppearanceLargePopupMenu
    • popupMenuStyle
    • android:actionMenuTextColor & actionMenuTextColor
  3. 我不想使用SpannableStrings - approach 似乎很hacky

【问题讨论】:

  • 似乎android:textColorSecondary 正在将文本更改为白色。
  • @GPack 即使我更改了textColorSecondary,不幸的是,textColor 仍然是白色。
  • 既然所有主题都是Light,也就是黑色文本,那么问题是:白色文本从何而来?也许您是在某些活动的 menu.xml 级别设置项目的样式?
  • @GPack 这就是白色从何而来的问题。我不知道有任何方法可以通过 menu.xml 或 java 代码设置菜单项的样式 - 所以可以肯定地说我没有这样做。 ;)
  • 并且工具栏xml中没有其他样式或主题引用?

标签: android android-appcompat


【解决方案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>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多