Android自定义AppCompat ActionBar

时间:2014-12-17 13:44:03

标签: android android-actionbar android-appcompat

我已经看到了多个线程,但我无法找到问题的解决方案。我想创建一个自定义操作栏,所以开始我只是尝试了一些简单的自定义颜色:

<style name="CustomActionBarTheme"
    parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <item name="android:actionBarStyle">@style/MyActionBar</item>
</style>

<style name="MyActionBar"
    parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
    <item name="android:background">#FF0000</item>
</style>

然后在Manifest我有:

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/CustomActionBarTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >

我的MainActivityextends ActionBarActivity

我收到错误消息说我需要将Theme.AppCompat应用于Activity,但我不再收到该错误。我的应用程序编译并运行,但操作栏只是标准的黑色,而不是红色(#FF0000)。

最终我想让我的操作栏透明,但我想我会先把它整理好。任何帮助,将不胜感激。

3 个答案:

答案 0 :(得分:2)

documentation所述,为了兼容复古,您应该使用actionBarStyleandroid:actionBarStyle

<style name="CustomActionBarTheme"
    parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <item name="android:actionBarStyle">@style/MyActionBar</item>
    <item name="actionBarStyle">@style/MyActionBar</item>
</style>

<style name="MyActionBar"
    parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
    <item name="android:background">#FF0000</item>
</style>

答案 1 :(得分:0)

如果您想要灵活性,请使用工具栏而不是ActionBar。我不认为你可以使默认操作栏透明,你可以使用工具栏实现。在这里阅读更多http://android-developers.blogspot.de/2014/10/appcompat-v21-material-design-for-pre.html

答案 2 :(得分:0)

使用新的AppCompat-v7(v21)ActionBar样式的属性需要引用应用程序命名空间,即没有android:前缀。