2011-10-31 10 views
30

Estoy tratando de establecer un icono personalizado para el icono de inicio usando ActionBarSherlock library. Intenté establecer un diseño personalizado con el atributo abHomeLayout en mi tema personalizado. Pero no funcionó para mí. La única manera, cómo configurarlo, es establecer el atributo abIcon para mi dibujo personalizado, pero no puedo establecer un relleno horizontal para este dibujable. ¿Hay algún ejemplo para esto o dónde podría haber un problema con el atributo abHomeLayout?Icono de inicio personalizado en Action Bar Sherlock

Respuesta

40

Esto funciona para mi situación, que reemplaza el icono ic_launcher defecto en la barra de acción con mi uno personalizado.

En su onCreate hacer esto:

getSupportActionBar().setIcon(R.drawable.audio_shortcut); 

O en el manifiesto se puede establecer el logotipo:

<activity> 
    android:logo="@drawable/my_custom_logo" 
    ... 
</activity> 
+0

¿Se puede configurar esto? en el manifiesto? Las pautas de desarrollo de Android dicen que debes configurar el logotipo ... –

-1

definir un estilo propio, así:

<resources> 
    <style name="Theme.OwnTheme" parent="@style/Theme.Sherlock"> 
    <item name="abBackground">#476dd5</item> 
    <item name="abHeight">30dip</item> 
    </style> 
</resources> 

Creo que aquí su puede usar abHomeLayout. definir este estilo para su actividad como esta:

<activity 
android:name=".MainActivity" 
android:theme="@style/Theme.OwnTheme"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

En MainActivity puede utilizar getSupportActionBar (...) funciones.

+0

Gracias s. He intentado 'abHomeLayout' como se mencionó anteriormente. Sin éxito, entonces necesitaría un ejemplo de trabajo. – sealskej

+2

Este es un ejemplo de cómo usar ABS pero no responde la pregunta en absoluto –

0

tuve problema similar con relleno incorrecto del icono de inicio en dispositivos API < 11 (es decir, no la barra de acción de plataformas de pleno derecho) y el estilo abHomeLayout sólo funcionaba API> 11

Mi solución fue copiar el abs__action_bar_home.xml diseño de ABS a proyecto secundario y manualmente agregar relleno a la abs__home imageview

<ImageView 
    android:id="@+id/abs__home" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:paddingTop="@dimen/action_bar_home_icon_top_bottom_padding" 
    android:paddingBottom="@dimen/action_bar_home_icon_top_bottom_padding" 
    android:paddingLeft="@dimen/action_bar_home_icon_left_right_padding" 
    android:paddingRight="@dimen/action_bar_home_icon_left_right_padding" 
    android:scaleType="centerInside" /> 
+1

¿Había algo más que necesitara agregar a su estilo, etc. para que esto surta efecto? He copiado el mismo archivo en res/layout/de mi proyecto, pero los ajustes al relleno no parecen funcionar. – brk3

+0

Mala respuesta, ni siquiera dice cómo aplicar este diseño –

5

Esto funciona muy bien también:

<style name="Theme.Styled" parent="Theme.Sherlock.Light.DarkActionBar"> 
    <item name="actionBarStyle">@style/Widget.Styled.ActionBar</item> 
    <item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item> 
</style> 

<style name="Widget.Styled.ActionBar" parent="Widget.Sherlock.Light.ActionBar.Solid.Inverse"> 
    <item name="icon">@drawable/my_custom_logo</item> 
    <item name="android:icon">@drawable/my_custom_logo</item> 
</style> 

Referencia: How to change the ActionBar “Home” Icon to be something other than the app icon?

Cuestiones relacionadas