2012-06-21 15 views
7

¿Cómo cambio el tamaño de fuente para el título de la barra de acciones usando Temas para ActionBarSherlock?¿Cómo puedo cambiar el estilo de fuente en ActionBarSherlock

Mi tema en el momento (se aplica a toda mi solicitud es como sigue):

<style name="Theme.MyAppDefaults" parent="@style/Theme.Sherlock.Light"> 
     <item name="android:textSize">@dimen/default_textsize</item> 
     <item name="actionBarSize">@dimen/action_bar_height</item> 
</style> 

en cuenta que el tamaño de fuente se establece como se establece en todas las vistas en mi aplicación. Simplemente no la fuente de ActionBar.

Respuesta

7

Tengo este trabajo utilizando el tema a continuación:

<style name="Theme.MyApp.Default" parent="@style/Theme.Sherlock.Light"> 
     <item name="actionBarStyle">@style/MyApp.SherlockActionBarStyle</item> 
     <item name="android:actionBarStyle">@style/MyApp.SherlockActionBarStyle</item> 
</style> 

<style name="MyApp.SherlockActionBarStyle" parent="@style/Widget.Sherlock.ActionBar"> 
     <item name="titleTextStyle">@style/MyApp.ActionBar.TextAppearance</item> 
</style> 

<style name="MyApp.ActionBar.TextAppearance" parent="@style/TextAppearance.Sherlock.Widget.ActionBar.Menu"> 
     <item name="android:textSize">@dimen/default_textsize</item> 
     <item name="android:textColor">@color/dark_grey</item> 
</style> 

Aviso el tamaño del texto está en el estilo llamado MyApp.ActionBar.TextAppearance. También de acuerdo con ActionBarSherlock el tema debe establecerse tanto en los atributos prefijados de Android como en los atributos normales (Ver actionBarStyle en el estilo Theme.MyApp.Default anterior)

+0

esto no permite fuentes personalizadas. Hay alguna forma de hacerlo ? –

10

Si solo necesita cambiar el estilo del título, puede agregar una vista personalizada con como este:

<TextView 
    android:id="@+id/action_custom_title" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="My Custom title" 
    android:textColor="#fff" 
    android:textSize="18sp" /> 

Luego, oculte el título real y muestre la vista personalizada.

_actionBar.setDisplayShowTitleEnabled(false); 

    LayoutInflater inflater = LayoutInflater.from(this); 
    View customView = inflater.inflate(R.layout.custom_action_layout, null); 

    TextView titleTV = (TextView) customView.findViewById(R.id.action_custom_title); 
    // you can apply a custom typeface here or do sth else... 

    _actionBar.setCustomView(customView); 
    _actionBar.setDisplayShowCustomEnabled(true); 

¡Eso es todo! Si está interesado, ¿cuál es el tamaño de fuente predeterminado para el título de ActionBar? Es 18sp.

+0

¿Esto también eliminará el botón de inicio y otras vistas en la barra de acciones? – Diederik

+0

No, no lo haría. El botón de inicio, las pestañas, los elementos de acción seguirán siendo los mismos;) – lomza

+0

Esta no es una mala solución, solo preferiría el tema de solo XML. Menos código para mantener. – Diederik

Cuestiones relacionadas