2012-05-10 7 views
8

Ich habe versucht, dies auf der Aktionsleiste zu umgehen, aber von Was ich den Titel sehen kann, ist im Grunde eine TextView, aber ich muss ein Bild anstelle von Nur-Text platzieren. Ich versuche es einzurichten in den Stil themes.xml wie folgt aus:ActionBar benutzerdefinierten Titel als ImaveView anstelle von TextView

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

Und dann definierte ich diesen Stil

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

Ich dachte, dass ich konnte den Hintergrund für den Titel definiert, aber auch wenn ich Tun Sie nicht, was ich will, versuchen Sie die getActionBar(). setCustomView (Layout); aber es ist passiert, dass meine Aktionsleiste null ist, bevor setContentView aufgerufen wird, und ich brauche es in einer Base-Klasse.

PD. Ich muss mich nur um HONEYCOMB und Higher kümmern, also bitte nicht Sherlock oder Jonhanilson Implementierungen vorschlagen.

Antwort

16

wenn Sie ein Bild möchten, können Sie die App-Logo zusammen mit dem Symbol angeben können (es wird statt Symbol verwendet werden):

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

Jetzt haben Sie ein beliebiges Bild anstelle Ihres lanucher Symbol. Was Sie als nächstes tun müssen, ist, den Text loszuwerden. In Ihrem Stile wie etwas zu tun:

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

sollten beide item name="titleTextStyle" und item name="android:titleTextStyle" verwenden, wenn Sie ActionBarSherlock verwenden, wenn ich mich gut erinnere.

1

Aufschalten setContentView wie folgt aus:

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

OR, können Sie dies tun:

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