2012-01-04 163 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" /> 

希望得到這個幫助。乾杯!

相關問題