Определить пользовательский логотип для ActionBar (отличается от логотипа) в XML?
Я хочу создать Actionbar_style.xml для своего приложения, и я бы хотел использовать логотип, отличный от моего логотипа/значка приложения.
Как изменить его программно понятно: Изменять логотип, который появляется в Android ActionBar программно
Но, как это, мне нужно было бы закодировать это в каждом действии.
Есть ли тег xml для определения пользовательского Actionbarlogo в xml уже?
my Customstyles.xml
<style name="CustomActionBar0" parent="android:style/Widget.Holo.Light.ActionBar">
<item name="android:background">@drawable/action_bg0</item>
</style>
android styles.xml, похоже, не имеет его...
<style name="Widget.ActionBar">
<item name="android:background">@android:drawable/action_bar_background</item>
<item name="android:displayOptions">useLogo|showHome|showTitle</item>
<item name="android:divider">@android:drawable/action_bar_divider</item>
<item name="android:height">?android:attr/actionBarSize</item>
<item name="android:paddingLeft">0dip</item>
<item name="android:paddingTop">0dip</item>
<item name="android:paddingRight">0dip</item>
<item name="android:paddingBottom">0dip</item>
<item name="android:titleTextStyle">@android:style/TextAppearance.Widget.ActionBar.Title</item>
<item name="android:subtitleTextStyle">@android:style/TextAppearance.Widget.ActionBar.Subtitle</item>
<item name="android:progressBarStyle">@android:style/Widget.ProgressBar.Horizontal</item>
<item name="android:indeterminateProgressStyle">@android:style/Widget.ProgressBar.Small</item>
<item name="android:homeLayout">@android:layout/action_bar_home</item>
</style>
Ответы
Ответ 1
Просто установите значение для атрибута android: icon
<style name="AppTheme" parent="@android:style/Theme.Holo.Light">
<item name="android:actionBarStyle">@style/AppTheme.ActionBarStyle</item>
</style>
<style name="AppTheme.ActionBarStyle" parent="android:style/Widget.Holo.Light.ActionBar">
<item name="android:background">@drawable/actionbar_background</item>
<item name="android:titleTextStyle">@style/AppTheme.ActionBar.TitleTextStyle</item>
<item name="android:icon">@drawable/ic_home</item>
<item name="android:indeterminateProgressStyle">@style/IndeterminateProgress</item>
</style>
Ответ 2
Вы не ставите логотип в свой стиль XML, вы просто используете android:logo
в манифесте, затем используйте setDisplayUseLogoEnabled()
, чтобы установить его в ActionBar
. Вот проект от Google, который показывает вам, как переключаться между ними. http://code.google.com/p/styled-action-bar/
Ответ 3
Похоже, вам нужно использовать пользовательский макет для панели действий, таким образом вы можете определить все, что хотите для изображения логотипа.
Панель действий /ActionbarSherlock style
<style name="ActionBar" parent="Widget.Sherlock.Light.ActionBar.Solid.Inverse">
<item name="displayOptions">showCustom</item>
<item name="android:displayOptions">showCustom</item>
<item name="customNavigationLayout">@layout/action_bar_home_icon_default</item>
<item name="android:customNavigationLayout">@layout/action_bar_home_icon_default</item>
</style>
@layout/action_bar_home_icon_default - это ваш собственный макет с вашим логотипом
Ответ 4
Да. Вы можете установить другой логотип для разных видов деятельности. Вот пример кода в файле манифеста.
<activity
android:name="MyActivity"
***android:icon="@drawable/logo"***
android:label="@string/app_name"
android:configChanges="orientation"
android:screenOrientation="portrait" />
Надеюсь на эту помощь. Ура!