4

Я хочу изменить значок вверх, применив следующий стиль к моей деятельности, но он не работает, но я все равно получаю значок «<» по умолчанию.ActionBarSherlock: изменение homeAsUpIndicator не работает

Может ли кто-нибудь узнать, чего здесь не хватает?

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

ответ

20

Если я правильно помню, я работал вокруг этого вопроса путем перемещения вы должны переместить android:homeAsUpIndicator и homeAsUpIndicator элементов в основную декларацию темы. Другими словами, попробуйте:

<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 (или любого другого стиля виджета) в качестве родителя. Если это ваша основная тема, я бы назвал ее соответствующим образом. До вас, конечно.


Edit: Обновленный ответ после комментария Джейка.

+3

Перемещение его в тему не является обходным путем, это подходящее место для этого. 'DisplayOptions' должен оставаться внутри объявления стиля панели действий. –

+0

Спасибо. Это отлично работает. Моя единственная проблема - изображение, которое я хочу использовать, больше, чем изображение по умолчанию. Система добавляет заполнение той же ширины, что и пользовательский образ, даже если его не показывают ... какие-либо идеи? – speedynomads

+0

Спасибо, что помогли и сработали, я царапал себе голову за последние два дня –

Смежные вопросы