2013-12-11 17 views
16

Podążam za tutorialem na temat developer.android.com i próbuję dodać elementy na pasku akcji.Przyciski akcji nie pojawiają się na pasku akcji?

Chociaż dodałem cały kod, akcja wyszukiwania jest wyświetlana jako element przepełnienia zamiast elementu przycisku akcji. Próbowałem na wirtualnych urządzeniach 4 "i 7" z opcją miękkiej klawiatury.

Oto

main_activity_actions.xml 
<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" > 
<!-- Search, should appear as action button --> 
<item android:id="@+id/action_search" 
    android:icon="@drawable/ic_action_search" 
    android:title="@string/action_search" 
    android:showAsAction="ifRoom" /> 
<!-- Settings, should always be in the overflow --> 
<item android:id="@+id/action_settings" 
    android:title="@string/action_settings" 
    android:showAsAction="never" /> 
</menu> 

Oto onCreateOptionsMenu metoda MainActivity.java „S.

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 

     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main_activity_actions, menu); 
     return super.onCreateOptionsMenu(menu); 
    } 

enter image description here

Chcę dowiedzieć się co powoduje ten problem.

+0

można udostępnić zrzut ekranu z przelewem widoczne? –

+3

Nie wydaje się to duplikatem tego pytania ... – adamdport

Odpowiedz

48

Dzieje się tak, ponieważ jeśli korzystasz z biblioteki AppCompat ActionBar i ActionBarActivity, powinieneś utworzyć menu w inny sposób niż standardowy sposób tworzenia menu xml w ActioBarSherlock lub domyślnym pasku ActionBar.

Więc spróbuj tego kodu:

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto"> 
     <item android:id="@+id/action_search" 
      android:icon="@drawable/ic_action_search" 
      android:title="@string/action_search" 
      app:showAsAction="always" /> 
     <item android:id="@+id/action_compose" 
      android:icon="@drawable/ic_action_compose" 
      android:title="@string/action_compose" 
      app:showAsAction="always"/> 
</menu> 
+4

Dla każdego innego z tym samym problemem ważne są przestrzenie nazw xmlns u góry definicji xml. – MarcF

+0

@MarcF - dlaczego są one ważne? – Anjum

+0

@Anjum - jak w nim nie byłoby dla mnie pracy bez tych deklaracji. Być może oczywiste dla kogoś innego, ale wtedy nie było to dla mnie. – MarcF

8

Chociaż problem został rozwiązany, daj mi zakładać odpowiedź z większą zawartością, można znaleźć przydatne każdemu później.

Teraz problem jest użyłeś android:showAsAction="ifRoom" i android:showAsAction="never", zamiast, czy chcesz, aby przycisk akcji zawsze widoczny następnie użyć android:showAsAction="always"

FYI, android: showAsAction może przybrać jedną z najmniejszych wartości:

android: showAsAction = ["ifRoom" | "nigdy" | "withText" | "zawsze" | "collapseActionView"]

enter image description here

Możesz przeczytać więcej o Menu Resource

Powiązane problemy