<style name="toolbarButton">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:clickable">true</item>
</style>
<style name="MyActionBar"
parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
<item name="android:background">@color/material_dark_blue</item>
<item name="android:displayOptions">showHome|homeAsUp|showTitle</item>
<item name="android:icon">@android:color/transparent</item>
<item name="android:centerX">@android:integer/config_shortAnimTime</item>
<item name="windowActionBar">false</item>
</style>
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:textColor">@color/material_white</item>
<item name="android:popupMenuStyle">@style/CustomOverflowBack</item>
<item name="android:itemTextAppearance">@android:color/white</item>
</style>
<style name="CustomOverflowBack" parent="@android:style/Widget.Holo.Light.ListPopupWindow">
<item name="android:popupBackground">@drawable/menu_item</item>
</style>
有了这个:
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
<item name="actionBarPopupTheme">@style/AppThemeOverlay.Popup</item>
</style>
<style name="AppThemeOverlay.Popup" parent="ThemeOverlay.AppCompat.Dark">
<item name="android:colorBackground">popup menu background color</item>
<item name="colorControlHighlight">selected item color</item>
</style>
以下是您的使用方法:
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
android:background="?colorPrimary"
android:elevation="4dp"
app:popupTheme="?actionBarPopupTheme"/>
以上内容足以使其在API 21及以上版本上工作。
我遗漏了你的
toolbarButton
风格,因为它与问题无关。
这里有一些提示
<style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
不要对AppCompat小部件使用平台样式。如果使用AppCompat样式
@style/Widget.AppCompat.ActionBar
实际上你必须重写
没有一个
属性的。
<item name="android:background">@color/material_dark_blue</item>
主题中的背景将应用于任何未覆盖它的视图。这就是你看到蓝色方块的原因。
android:background
是一个
风格
属性,在小部件上使用它。
android:colorBackground
是一个
主题
属性,并使用它为
android:popupBackground
,提供弹出菜单的形状。
<item name="android:textColor">@color/material_white</item>
文本颜色更像是文本视图上使用的样式属性。广泛使用的主题属性有
android:textColorPrimary
和
android:textColorSecondary
。请使用这些选项。
android:textColor
在主题中可能会产生意外/不希望的结果。
<item name="android:itemTextAppearance">@android:color/white</item>
不是
将颜色资源放入样式/文本外观属性。如果不崩溃,它将无法工作、崩溃或更糟地产生意外结果。