2014-10-20 16 views
30

Non so dove mi sia perso qualcosa, ma non riesco a impostare il mio logo nella barra delle azioni. mio AndroidManifest.xml:Il logo non viene visualizzato nella barra delle azioni, utilizzando AppCompat

<application 
    android:icon="@drawable/application_icon" 
    android:label="@string/icon_name" 
    android:logo="@drawable/actionbar_logo" 
    android:theme="@style/PolarTheme"> 

E inoltre ho impostato il mio logo nel mio tag attività nel manifesto:

<activity 
    android:name=".Main" 
    android:theme="@style/PolarThemeLogo" 
    android:logo="@drawable/actionbar_logo" 
    android:windowSoftInputMode="adjustPan"> 
</activity> 

Questo è a mio themes.xml:

<style 
    name="PolarThemeLogo" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="colorPrimary">@color/mainColor500</item> 
    <item name="colorPrimaryDark">@color/mainColor700</item> 
    <item name="colorAccent">@color/accentColorA200</item> 

    <item name="actionBarStyle">@style/MyActionBarLogo</item> 
    <item name="android:windowContentOverlay">@null</item> 
</style> 

mio styles.xml:

<style name="MyActionBarLogo" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse"> 
    <item name="background">@color/mainColor500</item> 
    <item name="displayOptions">useLogo</item> 
</style> 

Nel mio Main.java:

public class Main extends ActionBarActivity { 

@SuppressLint("NewApi") 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main);  
    ActionBar actionBar = getSupportActionBar(); 
    actionBar.setTitle(""); 
    actionBar.setDisplayUseLogoEnabled(true); 

Qualche idea?

AGGIORNAMENTO - RISOLTO

ho rimosso tutte le android:logo attributi dal mio AndroidManifest.xml e ho modificato il mio stile MyActionBarLogo in questo modo:

<style name="MyActionBarLogo" parent="@style/Widget.AppCompat.Light.ActionBar"> 
    <item name="background">@color/mainColor500</item> 
    <item name="logo">@drawable/actionbar_logo</item> 
    <item name="displayOptions">useLogo|showHome</item> 
</style> 

Ora l'ActionBar è la visualizzazione il mio logo. :)

+1

La documentazione di Google sul punto come sempre. –

+0

Non credo che devi rimuovere Android: logo dal tuo manifest, gli stili dovrebbero essere sufficienti. –

+0

Perché non usi l'ereditarietà dello stile? Quando usi "." come separatore lo stile eredita automaticamente dal suo genitore. F.e: PolarTheme.Logo erediterà da PolarTheme – Roel

risposta

24

ho rimosso tutto l'androide: logo attributi dal mio AndroidManifest.xml e ho modificato il mio stile MyActionBarLogo in questo modo:

<style name="MyActionBarLogo" parent="@style/Widget.AppCompat.Light.ActionBar"> 
    <item name="background">@color/mainColor500</item> 
    <item name="logo">@drawable/actionbar_logo</item> 
    <item name="displayOptions">useLogo|showHome</item> 
    </style> 

Ora l'ActionBar è la visualizzazione il mio logo. :)

+0

thanx zkminusck :) Ora posso vedere la freccia sinistra, il logo e il titolo nella mia barra delle azioni usando "useLogo | showHome | showTitle". Ma c'è una lacuna tra la freccia e il logo. Il logo è più vicino al titolo, ma è visto separato dalla freccia. Posso spostare il logo un po 'vicino alla freccia? – AndroidGuy

+0

Penso che sia possibile se si utilizza il nuovo widget Toolbar e si definisce un layout personalizzato per esso. Ma prima controlla le linee guida sulla progettazione dei materiali, penso che sia ok se hai uno spazio tra la freccia e il logo. Inoltre puoi controllare la tua immagine del logo, forse ha troppa imbottitura sulla sinistra. – zkminusck

+0

@zkminusck Ho esattamente bisogno di fare anche questo, ma con le schede. Quando provo il tuo codice, viene visualizzato il logo ma le schede sono sparite. È in qualche modo possibile impostare la proprietà navigationMode nel tema precedente? –

24

Io uso il seguente codice per mostrare il logo, spero che sarebbe utile.

getSupportActionBar().setDisplayUseLogoEnabled(true); 
getSupportActionBar().setDisplayShowHomeEnabled(true); 
getSupportActionBar().setIcon(R.drawable.logo); 
+1

Sì, l'ordine delle istruzioni sembra importante, le tue soluzioni funzionano alla grande – LucasFM

0

basta aggiungere 3 righe nel file Java e non aggiungere codice in XML e manifest di Android.

getSupportActionBar().setDisplayUseLogoEnabled(true); 
    getSupportActionBar().setDisplayShowHomeEnabled(true); 
    getSupportActionBar().setIcon(R.mipmap.ic_launcher); 
Problemi correlati