2011-10-31 12 views
30

Sto tentando di impostare l'icona personalizzata per l'icona di casa utilizzando ActionBarSherlock library. Ho provato a impostare il layout personalizzato usando l'attributo abHomeLayout nel mio tema personalizzato. Ma non ha funzionato per me. L'unico modo, come impostarlo, è impostare l'attributo abIcon per il mio drawble personalizzato, ma non posso impostare un padding orizzontale per questo drawable. C'è qualche esempio per questo o dove potrebbe esserci un problema con l'attributo abHomeLayout?Icona Home personalizzata in Action Bar Sherlock

risposta

40

Questo funziona per la mia situazione, si sostituisce l'icona ic_launcher default nella barra delle azioni con il mio personalizzato.

Nella tua onCreate fare questo:

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

O nel manifesto è possibile impostare il logo:

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

Può essere impostato nel manifest? Le linee guida di Android dev dicono di impostare il logo ... –

-1

definire un proprio stile, in questo modo:

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

Credo che qui il tuo può usare abHomeLayout. Impostare questo stile per la vostra attività in questo modo:

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

In MainActivity è possibile utilizzare getSupportActionBar() ... funzioni.

+0

Grazie S. Ho provato 'abHomeLayout' come menzionato sopra. Senza successo, quindi mi servirebbe un esempio funzionante. – sealskej

+2

Questo è un esempio di come usare l'ABS ma non risponde affatto alla domanda –

0

ho avuto problema simile con imbottitura non corretto del icona Home su dispositivi api < 11 (cioè non la vera e propria barra delle azioni della piattaforma) e lo stile abHomeLayout lavorato solo api> 11

La mia soluzione era quella di copiare il abs__action_bar_home.xml il layout da ABS a progetto figlio e aggiungere manualmente imbottitura per il 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

C'era qualcos'altro che dovevi aggiungere al tuo stile ecc. Per permettere che questo avesse effetto? Ho copiato lo stesso file in res/layout/del mio progetto, ma le modifiche al padding non sembrano funzionare .. – brk3

+0

Risposta errata, non dice nemmeno come applicare questo layout –

5

Questa grande opera troppo:

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

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

Problemi correlati