0

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

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

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

在 API 17+ 上:一切看起来都很好。icon 和 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>
4

3 回答 3

0

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

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

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

<item name="actionButtonStyle">@style/ActionMenuItemWhite</item>
于 2016-03-05T00:05:41.933 回答
0

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

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

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

于 2016-03-04T22:32:04.113 回答
0

请尝试更改 appcompat-v7 库版本

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

Bcoz 不支持 v7:23.2+

于 2016-03-07T14:32:37.090 回答