2012-05-10 4 views
8

Я пытаюсь обойти это на панели действий, но из того, что я вижу в названии, в основном является TextView, но мне нужно разместить изображение вместо обычного текста. Я стараюсь, чтобы установить его в стиль themes.xml как это:Пользовательский заголовок ActionBar как ImaveView вместо TextView

<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 (макет); но я понял, что мой actionbar имеет значение null до вызова setContentView, и мне это нужно в базовом классе.

PD. Мне нужно только заботиться о HONEYCOMB и выше, поэтому, если вы не хотите предлагать реализацию Шерлока или Йонанильсона.

ответ

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" и item name="android:titleTextStyle" если вы используете ActionBarSherlock, если я хорошо помню.

1

Override 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> 
Смежные вопросы