2014-10-20 9 views
30

Nie wiem, gdzie coś mi umknęło, ale nie mogę ustawić mojego logo na pasku akcji. My AndroidManifest.xml:Logo nie są wyświetlane w pasku czynności, za pomocą AppCompat

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

A także ustawić moje logo w moim tagu aktywności w manifeście:

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

To w moim 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> 

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

W moim 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); 

Jakieś pomysły?

AKTUALIZACJA - ROZWIĄZANIA

usunąłem wszystkie android:logo atrybuty z moim AndroidManifest.xml i zmodyfikowane mój styl MyActionBarLogo tak:

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

Teraz actionbar wyświetla moje logo. :)

+1

Dokumentacja Google na temat punktu, jak zawsze. –

+0

Nie wierzę, że musisz usunąć logo android: z manifestu, style powinny wystarczyć. –

+0

Dlaczego nie używasz dziedziczenia stylu? Gdy używasz "." jako separator styl odciąża automatycznie od swojego rodzica. F.e: PolarTheme.Logo odziedziczy po PolarTheme – Roel

Odpowiedz

24

usunąłem cały androida: Atrybuty logo z mojego AndroidManifest.xml i zmodyfikowane mój styl MyActionBarLogo tak:

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

Teraz actionbar wyświetla moje logo. :)

+0

thanx zkminusck :) Teraz widzę lewą strzałkę, logo oraz tytuł na moim pasku akcji, używając "useLogo | showHome | showTitle". Ale istnieje luka między strzałką a logo. Logo jest bliżej tytułu, ale widziane jest oddzielone od strzałki. Czy mogę przesunąć logo nieco w pobliżu strzałki? – AndroidGuy

+0

Myślę, że możesz, jeśli używasz nowego widżetu paska narzędzi i definiujesz dla niego niestandardowy układ. Ale najpierw sprawdź wytyczne dotyczące projektowania materiałów, myślę, że jest w porządku, jeśli masz lukę między strzałką a logo. Możesz również sprawdzić swoje logo, może ma zbyt dużo wyściółki po lewej stronie. – zkminusck

+0

@zkminusck Dokładnie muszę to zrobić, ale z zakładkami. Kiedy próbuję Twojego kodu, logo jest wyświetlane, ale karty zniknęły. Czy jest możliwe ustawienie właściwości navigationMode w powyższym motywie? –

24

Używam następującego kodu, aby pokazać logo, mam nadzieję, że będzie to pomocne.

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

Tak, kolejność instrukcji wydaje się ważna, twoje rozwiązania działają świetnie – LucasFM

0

po prostu dodaj 3 linie w pliku Java i nie dodawaj kodu w manifestach XML i Android.

getSupportActionBar().setDisplayUseLogoEnabled(true); 
    getSupportActionBar().setDisplayShowHomeEnabled(true); 
    getSupportActionBar().setIcon(R.mipmap.ic_launcher); 
Powiązane problemy