Я пытаюсь установить собственный значок для домашнего значка, используя библиотеку ActionBarSherlock. Я попытался установить собственный макет, используя атрибут abHomeLayout
в своей пользовательской теме. Но это не сработало для меня. Единственный способ, как его установить, - установить атрибут abIcon
для моего пользовательского рисунка, но я не могу установить горизонтальное дополнение для этого рисунка. Есть ли какой-нибудь пример для этого или где может быть проблема с атрибутом abHomeLayout
?
Пользовательская иконка Home в панели действий Sherlock
Ответы (4)
Это работает для моей ситуации, он заменяет значок ic_launcher по умолчанию на панели действий моим собственным.
В вашем onCreate сделайте следующее:
getSupportActionBar().setIcon(R.drawable.audio_shortcut);
Или в манифесте можно установить логотип:
<activity>
android:logo="@drawable/my_custom_logo"
...
</activity>
Это тоже прекрасно работает:
<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>
У меня была аналогичная проблема с неправильным заполнением значка дома на устройствах 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" />
Определите собственный стиль, например:
<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()....
abHomeLayout
как указано выше. Без успеха, поэтому мне нужен рабочий пример.
- person sealskej; 01.11.2011