Пользовательская иконка Home в панели действий Sherlock

Я пытаюсь установить собственный значок для домашнего значка, используя библиотеку ActionBarSherlock. Я попытался установить собственный макет, используя атрибут abHomeLayout в своей пользовательской теме. Но это не сработало для меня. Единственный способ, как его установить, - установить атрибут abIcon для моего пользовательского рисунка, но я не могу установить горизонтальное дополнение для этого рисунка. Есть ли какой-нибудь пример для этого или где может быть проблема с атрибутом abHomeLayout?


person sealskej    schedule 31.10.2011    source источник


Ответы (4)


Это работает для моей ситуации, он заменяет значок ic_launcher по умолчанию на панели действий моим собственным.

В вашем onCreate сделайте следующее:

getSupportActionBar().setIcon(R.drawable.audio_shortcut);

Или в манифесте можно установить логотип:

<activity>
    android:logo="@drawable/my_custom_logo"
    ...
</activity>
person Matthew    schedule 03.06.2012

Это тоже прекрасно работает:

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

<style name="Widget.Styled.ActionBar" parent="Widget.Sherlock.Light.ActionBar.Solid.Inverse">
    <item name="icon">@drawable/my_custom_logo</item>
    <item name="android:icon">@drawable/my_custom_logo</item>
</style>

Ссылка: Как изменить значок «Главная» на панели действий, чтобы он был чем-то другим, кроме значка приложения?

person Brais Gabin    schedule 27.06.2013

У меня была аналогичная проблема с неправильным заполнением значка дома на устройствах API‹11 (т.е. не полноценная панель действий платформы), а стиль abHomeLayout работал только с API>11.

Мое решение состояло в том, чтобы скопировать макет abs__action_bar_home.xml из ABS в дочерний проект и вручную добавить дополнение к изображению abs__home.

<ImageView
    android:id="@+id/abs__home"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:paddingTop="@dimen/action_bar_home_icon_top_bottom_padding"
    android:paddingBottom="@dimen/action_bar_home_icon_top_bottom_padding"
    android:paddingLeft="@dimen/action_bar_home_icon_left_right_padding"
    android:paddingRight="@dimen/action_bar_home_icon_left_right_padding"
    android:scaleType="centerInside" />
person scottyab    schedule 08.02.2012
comment
Было ли что-то еще, что вам нужно было добавить к вашему стилю и т. д., чтобы это вступило в силу? Я скопировал тот же файл в res/layout/ моего проекта, но настройки заполнения, похоже, не работают. - person brk3; 26.02.2012
comment
Плохой ответ, даже не сказано, как применить этот макет - person Kevin Parker; 14.09.2013

Определите собственный стиль, например:

<resources>
  <style name="Theme.OwnTheme" parent="@style/Theme.Sherlock">
    <item name="abBackground">#476dd5</item>
    <item name="abHeight">30dip</item>
  </style>
</resources>

Я думаю, здесь вы можете использовать abHomeLayout. Установите этот стиль для своей деятельности следующим образом:

<activity 
 android:name=".MainActivity" 
 android:theme="@style/Theme.OwnTheme">
   <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
</activity>

В MainActivity вы можете использовать функции getSupportActionBar()....

person andep    schedule 01.11.2011
comment
Спасибо. Я пробовал abHomeLayout как указано выше. Без успеха, поэтому мне нужен рабочий пример. - person sealskej; 01.11.2011
comment
Это пример того, как использовать ABS, но вообще не отвечает на вопрос. - person David Snabel-Caunt; 06.01.2012