2012-01-04 178 views
23

我想打一个Actionbar_style.xml我的应用程序,我想用一个标志,不是我的应用程序的标志/图标不同。在XML中为ActionBar定义自定义徽标(与徽标不同)?

如何在编程上进行更改是明确的:Change logo that appears in Android ActionBar programatically 但是,像这样我需要将它编码到每个活动中。

是否有一个XML标记在XML来定义一个定制Actionbarlogo了吗?

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

回答

2

你没有风格的标志在你的风格XML,只需使用android:logo在您的清单中,然后使用setDisplayUseLogoEnabled()将其设置在ActionBar中。这是Google提供的一个项目,向您展示如何在两者之间切换。 http://code.google.com/p/styled-action-bar/

+0

不,应用了操作栏的样式,操作栏的背景beeing改变。我想要的是通过XML声明来更改主标识。在编程方面,我可以使用Actionbar.setLogo()来实现。但我不知道如何通过XML来做到这一点。 – KarlKarlsom 2012-01-04 19:28:11

+0

@KarlKarlsom我更新了我原来的帖子,对此感到抱歉。 – adneal 2012-01-05 00:36:39

+1

但是android:徽标也用于其他药剂(例如4.0中的任务图标)。但在操作栏中,我想要一个不适合作为徽标的图形。 – KarlKarlsom 2012-01-06 17:41:53

1

听起来像你需要使用自定义布局的动作栏,这样你可以定义任何你想要的标志图像。

行动酒吧/ ActionbarSherlock风格

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

@布局/ action_bar_home_icon_default是您的自定义布局,自定义徽标

36

只需设置为Android值:图标属性

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

它不起作用 – Programmer 2015-04-25 05:18:48

+0

会很高兴有一个更新的答案。 – nickfox 2016-10-31 12:41:00

-1

是。您可以为不同的活动设置不同的标志。这是清单文件中的示例代码。

<activity 
    android:name="MyActivity" 
    ***android:icon="@drawable/logo"***    
    android:label="@string/app_name" 
    android:configChanges="orientation"   
    android:screenOrientation="portrait" /> 

希望得到这个帮助。干杯!

相关问题