ActionBarSherlock:更改homeAsUpIndicator不起作用

时间:2012-10-31 23:23:03

标签: android android-actionbar actionbarsherlock android-xml

我想通过将以下样式应用到我的活动来更改向上图标,但它不起作用,但我仍然得到默认的黑色'<'图标。

有谁能找到这里缺少的东西?

<style name="AppTheme.ActionBar" parent="@style/Theme.Sherlock.Light">
    <item name="actionBarStyle">@style/actionBarStyle</item>
    <item name="android:actionBarStyle">@style/actionBarStyle</item>
</style>

<style name="actionBarStyle" parent="@style/Widget.Sherlock.Light.ActionBar.Solid">
    <item name="android:background">@drawable/header_bar</item>
    <item name="background">@drawable/header_bar</item>

    <item name="android:homeAsUpIndicator">@drawable/up_indicator</item>
    <item name="homeAsUpIndicator">@drawable/up_indicator</item>
    <item name="android:displayOptions">homeAsUp|showHome</item>
    <item name="displayOptions">homeAsUp|showHome</item>

</style>

1 个答案:

答案 0 :(得分:20)

如果我没记错的话,我通过移动来解决这个问题你应该将android:homeAsUpIndicatorhomeAsUpIndicator元素移到主题宣言中。换句话说,尝试:

<style name="AppTheme.ActionBar" parent="@style/Theme.Sherlock.Light">
    <item name="actionBarStyle">@style/actionBarStyle</item>
    <item name="android:actionBarStyle">@style/actionBarStyle</item>
    <item name="android:homeAsUpIndicator">@drawable/up_indicator</item>
    <item name="homeAsUpIndicator">@drawable/up_indicator</item>
</style>

<style name="actionBarStyle" parent="@style/Widget.Sherlock.Light.ActionBar.Solid">
    <item name="android:background">@drawable/header_bar</item>
    <item name="background">@drawable/header_bar</item>
    <item name="android:displayOptions">homeAsUp|showHome</item>
    <item name="displayOptions">homeAsUp|showHome</item>
</style>

不确定我是否也必须向上移动displayOptions,但你也可以在上面的情况下放弃它,不会马上工作。

顺便说一下,我发现命名一个样式AppTheme.ActionBar,然后继承Theme.Sherlock.Light而非常混乱。如果它是ActionBar特定的样式,我会期望像Widget.Holo.Light.ActionBar(或任何其他小部件样式)那样的父级。如果它是您的主题,我会相应地命名。当然由你决定。


修改:在杰克的评论之后更新了答案。