【问题标题】:Android API 16 MenuItem and Navigation Drawer Icon BackgroundColorAndroid API 16 菜单项和导航抽屉图标背景颜色
【发布时间】:2016-03-07 22:32:37
【问题描述】:

我的应用程序使用 AppCompat 库,目标是 v23,minSDK 是 v16。我目前有一个带有导航抽屉片段的活动,我在主活动上的 3 个不同片段之间切换。

我的 AppCompatToolbar 颜色为蓝色,我的 Activity 背景为灰色。

在 API 16 上:我的导航抽屉图标(设置为主页按钮)和任何从我的片段中膨胀的 MenuItem 在我的蓝色工具栏顶部周围都有灰色背景。

在 API 17+ 上:一切看起来都很好。图标和 MenuItems 使用工具栏颜色。

很遗憾,我无法展示图片,因为我没有足够的代表,但你明白了。

我没有在 onPrepareOptionsMenu 或 onCreateOptionsMenu 中做任何时髦的事情。我找不到任何关于此的信息,并且仅在运行 API 16 的设备上发生。继承自 styles.xml 的相关主题我将粘贴任何必要的代码。

<style name="AppThemeWhite" parent="AppTheme.Base">
    <item name="android:textColor">#ffffff</item>
    <item name="android:textColorSecondary">#FFFFFF</item>
    <item name="android:textColorTertiary">#FFFFFF</item>
    <item name="actionMenuTextAppearance">@style/ActionMenuItemWhite</item>
    <item name="actionMenuTextColor">@android:color/white</item>
</style>

<!-- Base application theme. -->
<style name="AppTheme.Base" parent="Theme.AppCompat.NoActionBar">
    <item name="android:windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
    <item name="windowActionBarOverlay">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:editTextStyle">@style/LightEditText</item>
    <item name="alertDialogTheme">@style/CustomAlertDialog</item>
    <item name="colorAccent">@android:color/white</item>
    <item name="colorControlHighlight">@color/appButtonHighlightColor</item>
    <item name="android:textSize">@dimen/material_text_button</item>
    <item name="colorButtonNormal">@color/appButtonColor</item>
    <item name="colorPrimary">@color/appToolbarColor</item>
    <item name="colorPrimaryDark">@color/appStatusBarColor</item>
    <item name="android:dividerHeight">1px</item>
    <item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item>
    <!-- Customize your theme here. -->
</style> 
<style name="ToolbarTheme" parent="Base.ThemeOverlay.AppCompat.ActionBar">
    <item name="actionMenuTextColor">@android:color/white</item>
    <item name="android:actionMenuTextAppearance">@style/ActionMenuItemWhite</item>
</style>
   <style name="ActionMenuItemWhite" parent="Widget.AppCompat.Light.ActionButton">
    <item name="actionMenuTextColor">@color/appTextColor</item>
    <item name="android:background">@android:color/transparent</item>
    <item name="android:textSize">@dimen/material_text_menu</item>
</style>

【问题讨论】:

    标签: android navigation-drawer menuitem android-appcompat android-4.1-jelly-bean


    【解决方案1】:

    我可能在这里误解了,但是为什么他们的 MenuItems 是从 Fragments 膨胀的?通常,“v7.appcompat.toolbar”会在主 Activity 中膨胀它的 MenuItems。

    也仅供参考,但在最近,当我尝试通过更改样式/主题中的“ActionBar”设置来更改某些“工具栏”设置时,我自己的结果好坏参半且不可靠。

    您为什么选择 16 作为最低要求?从 API 23 开始让您的应用向后兼容可能非常棘手,因为在比较 pre-API 21 和 post-API 21 时,有很多代码在 Android 中的工作方式不同。

    【讨论】:

      【解决方案2】:

      有时样式需要android:name 项目和name 来支持旧的机器人和自定义小部件...示例:

      <item name="android:editTextStyle">@style/LightEditText</item>
      <item name="editTextStyle">@style/LightEditText</item>
      

      您也可以尝试将其添加到您的 AppTheme.Base 样式中:

      <item name="actionButtonStyle">@style/ActionMenuItemWhite</item>
      

      【讨论】:

        【解决方案3】:

        请尝试更改 appcompat-v7 库版本

          compile 'com.android.support:appcompat-v7:23.1.1'
        

        Bcoz 不支持 v7:23.2+

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-11-08
          • 1970-01-01
          • 2016-12-22
          • 1970-01-01
          • 1970-01-01
          • 2013-06-10
          • 2016-06-16
          • 1970-01-01
          相关资源
          最近更新 更多