我有一个带有操作栏的活动。 minSdkVersion是11。
操作栏是灰色,我想将其更改为不同的颜色,以便它与我的应用程序中的其他颜色匹配。
我创建了以下样式
<style name="MyTheme" parent="@android:style/Theme.Holo.Light">
<item name="android:actionBarStyle">@style/MyActionBar</item>
</style>
<style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
<item name="android:background">#FFF</item>
</style>
并将此活动的主题设置为MyTheme,但是当我运行该应用程序时,我收到此错误:
You need to use a Theme.AppCompat theme (or descendant) with this activity.
我做错了什么?
答案 0 :(得分:1)
请参阅https://developer.android.com/training/basics/actionbar/styling.html,特别是这些部分
注意:如果您使用支持库API作为操作栏, 那么你必须使用(或覆盖)Theme.AppCompat样式系列 (而不是主题.Holo系列,API级别11和 更高)
和
使用支持库时,您必须改为使用Theme.AppCompat主题:
主题.AppCompat为“黑暗”主题。
Theme.AppCompat.Light为“轻”主题。
Light主题的Theme.AppCompat.Light.DarkActionBar 一个黑暗的动作吧。
基本上你必须用'AppCompat'替换'Holo'
答案 1 :(得分:0)
如果您使用ActionBarActivity,则需要使用AppCompat主题,它将Lollipop样式操作栏带到所有设备并支持Material Color Palette,允许您编写主题,例如
<style name="MyTheme" parent="@android:style/Theme.AppCompat.Light">
<item name="ColorPrimary">@color/primary</item>
</style>
自动设置操作栏颜色的样式。
如果您不想使用其中任何一种(并且在Lollipop设备上看起来非常不同),则可以扩展FragmentActivity或Activity,具体取决于您是否要使用支持库片段(反向移植并修复嵌套片段和状态保存周围的许多问题)。
答案 2 :(得分:0)
只需使用此功能,如果您在活动中扩展ActivityActionBar,则需要使用AppCompat主题。
<style name="AppCompatTheme" parent="@android:style/Theme.AppCompat.Light">
<item name="ColorPrimary">@color/primary</item>
</style>
或使用style / Theme.AppCompat.Dark获取白色文本:)