我正在尝试将appcompat-v7工具栏设置为为我的溢出菜单设置不同的背景颜色。 我尝试使用我的应用程序的主题和我的工具栏的样式,但我无法实现它。
这是我的工具栏:
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:layout_width="match_parent"
app:theme="@style/AppToolbarTheme"
android:layout_height="wrap_content">
这是我创建的风格:
<style name="AppToolbarTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:textColorPrimary">@color/white</item>
<item name="android:textColorSecondary">@color/cian</item>
</style>
我的主题是扩展Theme.AppCompat.Light。
有谁知道我该怎么办?如果无法使用样式,还有其他方法可以实现吗?
答案 0 :(得分:35)
将其添加到工具栏元素
app:popupTheme="@style/ThemeOverlay.YourPopup"
然后在styles.xml
中定义弹出菜单样式
<style name="ThemeOverlay.YourPopup" parent="ThemeOverlay.AppCompat.Light">
<item name="android:colorBackground">@color/mtrl_white_100</item>
<item name="android:textColor">@color/mtrl_light_blue_900</item>
</style>
<style name="ThemeOverlay.YourPopup" parent="ThemeOverlay.AppCompat.Light">
<item name="android:colorBackground">@color/mtrl_white_100</item>
<item name="android:textColorPrimary">@color/mtrl_light_blue_900</item>
</style>
请注意,您需要使用android:colorBackground
而不是android:background
。后者将应用于没有背景的所有内容(此处为菜单本身和每个菜单项),前者仅适用于弹出菜单。
更新:同样适用于textColorPrimary
和textColor
。
android:textColor="?android:textColorPrimary"
。android:textColorPrimary
是一个主题属性,它是在主题上定义的。android:textColor
是样式属性,已在小部件上定义。android:textColor
,则会将其应用于未定义自己的android:textColor
的每个小部件。答案 1 :(得分:1)
使用android
属性时,不要使用AppCompat
命名空间。修改您的代码如下:
<style name="AppToolbarTheme" parent="Theme.AppCompat.NoActionBar">
<item name="textColorPrimary">@color/white</item>
<item name="textColorSecondary">@color/cian</item>
</style>
答案 2 :(得分:1)
将其添加到activity.xml文件的工具栏中: -
app:popupTheme="@style/ThemeOverlay.YourApp"
然后在你的styles.xml中添加: -
<style name="ThemeOverlay.YourApp" parent="ThemeOverlay.AppCompat.Light">
<item name="android:colorBackground">@android:color/darker_gray</item>
<item name="android:textColorPrimary">@color/TextColorPrimary</item>
</style>