如何在Android中混合来自不同主题的样式?

时间:2017-03-04 10:44:52

标签: android material-design

我是Android主题的新手,所以这可能是一个初学者问题,但我无法弄清楚。

<style name="MyAppTheme" parent="android:Theme.Material">
    <item name="android:colorPrimary">@color/primary</item>
    <item name="android:colorPrimaryDark">@color/primary_dark</item>
</style>

我想使用新的Material主题,所以我使用Theme.Material和我自己的colorPrimary和primaryDark颜色来按照我想要的方式获取操作栏。但是对于上下文菜单(当您按右上角的3点图标时打开的菜单)我想使用Theme.Material.Light版本。所以我希望在白色背景上使用黑色文本的上下文菜单,而不是灰色背景上的白色文本。

我该怎么做?

2 个答案:

答案 0 :(得分:2)

我建议不要使用&#34;材料&#34;主题即可。旧设备不支持此功能。但是,如果您使用AppCompat,它将实现相同的效果,但具有向后兼容性。

如果您使用模板创建新活动,它将按您的意愿工作。不过,这是代码:

<!--Application-->
<style name="AppTheme" parent="Theme.AppCompat.Light">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="popupTheme">@style/NewAppTheme.PopupOverlay</item>
</style>

<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light"/>

答案 1 :(得分:0)

将此主题添加到工具栏:

app:popupTheme="@style/myStyle"

在弹出菜单的自定义主题中定义backgroundcolor和textColor:

<style name="myStyle" parent="ThemeOverlay.AppCompat.Light">
    <item name="android:colorBackground">yourBackgroundColor</item>
    <item name="android:textColor"yourTextcolor></item>
</style>

如果您使用的是ActionBar,请使用ActionBar Generator并使用res文件夹中生成的文件。

希望这有帮助。