2012-05-10 18 views
8

Próbowałem obejść to na pasku akcji, ale z tego co widzę tytuł jest zasadniczo tekstem, ale muszę umieścić obraz zamiast zwykłego tekstu. Staram się ustawić go w themes.xml stylu jak ten:Niestandardowy tytuł ActionBara jako ImaveView zamiast TextView

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

I wtedy ten styl zdefiniowany

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

myślałem, że mogę zdefiniowano tło dla tytułu, ale nawet gdybym nie jest to, czego chcę, spróbuj getActionBar(). setCustomView (układ); ale stało się, że mój pasek akcji ma wartość null przed wywołaniem setContentView i potrzebuję go w klasie Base.

PD. Trzeba tylko dbać o HONEYCOMB i Higher, więc jeśli nie sugerujesz Sherlock lub Jonhanilson implementations.

Odpowiedz

16

jeśli chcesz obraz, można określić aplikacji logo wraz z ikoną (będzie używany zamiast ikony):

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

Teraz masz dowolny obraz zamiast ikonę lanucher. To, co musisz zrobić, to pozbyć się tekstu. W twojej style zrobić coś takiego:

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

Należy użyć zarówno item name="titleTextStyle" i item name="android:titleTextStyle" jeśli używasz ActionBarSherlock jeśli dobrze pamiętam.

1

Zastąp setContentView tak:

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

OR, można to zrobić:

<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> 
Powiązane problemy