30

Używam nowej obsługi paska działań, a wszystkie moje widoki działań są wyświetlane w przepełnieniu, a nie jako ikony na pasku. Moja aplikacja jest dla 7+ API.Pasek akcji nie wyświetlający ikon widoku akcji

HomeActivity:

public class HomeActivity extends ActionBarActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     ActionBar actionBar = getSupportActionBar(); 
     actionBar.setTitle(R.string.app_name); 
     actionBar.setDisplayHomeAsUpEnabled(true); 
     actionBar.setHomeButtonEnabled(true); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.home, menu); 
     return true; 
    } 
} 

home.xml

<item 
    android:id="@+id/action_settings" 
    android:orderInCategory="100" 
    android:showAsAction="never" 
    android:title="@string/action_settings"/> 
<item 
    android:id="@+id/action_browse" 
    android:orderInCategory="100" 
    android:showAsAction="never" 
    android:title="@string/title_activity_browse"/> 
<item 
    android:id="@+id/action_search" 
    android:actionViewClass="android.widget.SearchView" 
    android:icon="@android:drawable/ic_menu_search" 
    android:showAsAction="ifRoom|collapseActionView" 
    android:title="@string/text_search"/> 
<item 
    android:id="@+id/action_scan" 
    android:icon="@drawable/action_scan" 
    android:showAsAction="always" 
    android:title="@string/title_activity_browse"/> 

mam rozmieszczanie na Nexusa 7 z 4.3 i na LGP500 z 2.3.3 i bez ikon . Dodałem również android: theme = "@ style/Theme.AppCompat.Light.DarkActionBar" w manifeście, a mój projekt poprawnie odwołuje się do android-support-v7-appcompat, jak opisano w oficjalnym dokumencie.

+1

możliwe duplikat [android.support.v7 z \ '\' ActionBarActivity nie pokazuje menu] (http://stackoverflow.com/questions/17881547/android-support-v7-with-actionbaractivity-no-menu-shows) – BeccaP

Odpowiedz

82

musisz zdefiniować swoje pliki zasobów menu z atrybutami biblioteki pomocy technicznej.

Aby zaimplementować wsparcie z tyłu, odczytuje je zamiast tych zdefiniowanych w starszej wersji Androida.

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:yourapp="http://schemas.android.com/apk/res-auto" > 

<item 
    android:id="@+id/action_settings" 
    android:orderInCategory="100" 
    android:showAsAction="never" 
    yourapp:showAsAction="never" 
    android:title="@string/action_settings"/> 
<item 
    android:id="@+id/action_browse" 
    android:orderInCategory="100" 
    android:showAsAction="never" 
    yourapp:showAsAction="never" 
    android:title="@string/title_activity_browse"/> 
<item 
    android:id="@+id/action_search" 
    android:actionViewClass="android.support.v7.widget.SearchView" 
    android:icon="@android:drawable/ic_menu_search" 
    android:showAsAction="ifRoom|collapseActionView" 
    yourapp:showAsAction="ifRoom|collapseActionView" 
    yourapp:actionViewClass="android.support.v7.widget.SearchView" 
    android:title="@string/text_search"/> 
<item 
    android:id="@+id/action_scan" 
    android:icon="@drawable/action_scan" 
    android:showAsAction="always" 
    yourapp:showAsAction="always" 
    android:title="@string/title_activity_browse"/> 

</menu> 

NB Pamiętaj, że dla klasa SearchView zmienił. Teraz wykorzystał jedną z biblioteki wsparcia więc trzeba także zaktualizować swój kod w onCreateOptionsMenu()

EDIT: here jest całkiem dobry tutorial jak migrować z ActionBarSherlok do AppCompat

+0

Tak, działa poprawnie z wyjątkiem widoku wyszukiwania: ikona jest wyświetlana poprawnie, ale nic się nie dzieje, jeśli kliknięcie na nią ... mimo to Naprawdę mam ciężkie czasy, by zrozumieć tę kwestię, czy jest to rodzaj nadrzędnego domyślnego schematu? Dlaczego nie znalazłem żadnej dokumentacji na ten temat? :( – Jumpa

+0

Tak, to jest. Zasadniczo, aby móc wdrożyć wsparcie back, nie mogli odczytać nowe atrybuty menu zdefiniowane dopiero po API 11 (? Nie wiem), więc zdefiniowali nowe atrybuty i używają ich .. I ' Zamierzam edytować moje answear z poprawną implikacjąViewView –

+0

K, oznaczone jako odpowiedziałem, czy możesz powiedzieć coś o problemie z ikoną wyszukiwania? EDIT: rozwiązany dodanie niestandardowego tagu =) Wielkie dzięki jeszcze raz. – Jumpa

-1

Typowym błędem jest zapominanie o umieszczeniu napisu tytułowego w pliku string.xml. Pamiętaj, aby uwzględnić to dla każdego elementu menu.

Załóżmy naszym menu xml zawiera następujący element:

<item 
    android:id="@+id/toggle_action" 
    android:orderInCategory="1" 
    android:showAsAction="ifRoom" 
    android:title="@string/toggle_action"/> 

Jeśli zapomnij podać wartość dla toggle_action strun, to ikona na pasku działania nie będą wyświetlane.

przejdź do pliku strings.xml i dodać następujące:

<string name="toggle_action">TOGGLE</string> 
+0

Czy możesz być bardziej konkretny? Do czego odnosi się "tytuł"? – Jumpa

+0

Zmieniono moją odpowiedź. – Shonu93

Powiązane problemy