2012-05-10 30 views
8

我試圖在操作欄上解決此問題,但是從我可以看到的標題基本上是一個TextView,但我需要放置圖像而不是純文本。我試着將它設置成風格的themes.xml就象這樣:作爲ImaveView而不是TextView的ActionBar自定義標題

<item name="android:actionBarStyle">@style/MyActionBar</item> 

然後,我定義這個風格

<style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar"> 
    <item name="android:background">@drawable/action_background</item> 
    <item name="android:titleTextStyle">@style/ActionbarTitleStyle</item> 
</style> 

我以爲我可以定義爲標題的背景,但即使我do不是我想要的,試試getActionBar()。setCustomView(layout);但是在調用setContentView之前我的actionbar是null,我需要它在Base類中。

PD。我只需要關心HONEYCOMB和更高版本,所以如果你不建議Sherlock或Jonhanilson實現。

回答

16

如果你想要的圖像,你可以帶圖標的指定應用程序標識(它會被用來代替圖標):

<application 
    android:icon="@drawable/ic_launcher" 
    android:logo="@drawable/logo" 
    android:label="@string/app_name" 
    android:name=".AppName" 
    > 

現在你有一個任意圖像,而不是你的lanucher圖標。接下來你需要做的是擺脫文字。在您的樣式做這樣的事情:

<style name="Widget.Styled.ActionBar" parent="Widget.Sherlock.ActionBar"> 
    <item name="titleTextStyle">@style/NoTitleText</item> 
    <item name="android:titleTextStyle">@style/NoTitleText</item> 
    <item name="subtitleTextStyle">@style/NoTitleText</item> 
    <item name="android:subtitleTextStyle">@style/NoTitleText</item>  
</style> 

<style name="NoTitleText"> 
    <item name="android:textSize">0sp</item> 
    <item name="android:textColor">#00000000</item> 
</style> 

如果我記得很清楚,您應該同時使用item name="titleTextStyle"如果您使用ActionBarSherlock item name="android:titleTextStyle"

1

覆蓋的setContentView這樣的:

@Override 
public void setContentView(int resLayoutId) { 
    super.setContentView(resLayoutId); 
    // TODO Set your actionbar changes here 
} 

或者,你可以這樣做:

<style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar"> 
    <item name="android:background">@drawable/action_background</item> 
    <item name="android:titleTextStyle">@style/ActionbarTitleStyle</item> 
    <item name="android:displayOptions">showCustom</item> 
    <item name="android:customNavigationLayout">@layout/custom_nav_layout</item> 
</style>