ActionBarSherlock:更改homeAsUpIndicator不起作用

Gal*_*aim 4 android android-xml actionbarsherlock android-actionbar

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

任何人都可以找到这里缺少的东西吗?

<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>
Run Code Online (Sandbox Code Playgroud)

MH.*_*MH. 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>
Run Code Online (Sandbox Code Playgroud)

不确定我是否也必须向上移动displayOptions,但你可能想要在上面的情况下也不要马上工作.

顺便说一句,我发现命名一个风格AppTheme.ActionBar,然后继续Theme.Sherlock.Light相当混乱.如果它是ActionBar特定的样式,我会期望像Widget.Holo.Light.ActionBar(或任何其他窗口小部件样式)一样的东西.如果这是你的主题,我会相应地命名.当然是你自己.


编辑:杰克评论后更新的答案.

  • 将它移动到主题中并不是一种解决方法,它是适合它的位置.`displayOptions`应保留在操作栏样式声明中. (3认同)