【问题标题】:ActionBarSherlock: changing homeAsUpIndicator doesn't workActionBarSherlock:更改 homeAsUpIndicator 不起作用
【发布时间】:2012-10-21 13:18:27
【问题描述】:

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

谁能找出这里遗漏了什么?

<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>

【问题讨论】:

    标签: android android-actionbar actionbarsherlock android-xml


    【解决方案1】:

    如果我没记错的话,我通过移动解决了这个问题,您应该将 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 (或任何其他小部件样式)作为父级。如果这是你的主题,我会相应地命名它。当然取决于你。


    编辑:在 Jake 发表评论后更新了答案。

    【讨论】:

    • 将它移动到主题中并不是一种解决方法,它是解决此问题的合适位置。 displayOptions 应保留在操作栏样式声明中。
    • 谢谢。这很好用。我唯一的问题是我要使用的图像大于默认的向上图像。系统添加与自定义向上图像相同宽度的填充,即使它没有显示......有什么想法吗?
    • 感谢它的帮助和工作,从过去的两天开始,我一直在摸不着头脑
    • @JakeWharton,您的 cmets 一如既往地拯救生命!欣赏你的工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多