2012-05-10 13 views
8

He intentado evitar esto en la barra de acciones, pero desde Lo que puedo ver, el título es básicamente un TextView pero necesito colocar una imagen en lugar de texto sin formato. Trato de configurarlo en el themes.xml estilo como este:Título personalizado de ActionBar como ImaveView en lugar de TextView

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

Y luego he definido este estilo

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

pensé que podía definido el fondo para el título, pero incluso si lo do no es lo que quiero, pruebe getActionBar(). setCustomView (layout); pero sucede que mi barra de acciones es nula antes de que se llame a setContentView y lo necesito en una clase base.

PD. Solo necesito preocuparme por HONEYCOMB y Higher, así que si no sugieres las implementaciones de Sherlock o Jonhanilson.

Respuesta

16

si quieres una imagen, puede especificar el logotipo de aplicación junto con el icono (que se utilizará en lugar del icono):

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

Ahora usted tiene una imagen arbitraria en lugar de su icono lanucher. Lo que debes hacer a continuación es deshacerte del texto. En sus estilos de hacer algo como:

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

Debe utilizar tanto item name="titleTextStyle"item name="android:titleTextStyle" y si utiliza ActionBarSherlock si no recuerdo mal.

1

Anulación setContentView así:

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

O, usted puede hacer esto:

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