Android 4.3 Menüpunkt showAsAction = "immer" ignoriert
Ich bin mit der neuen v7 appcompat library verfügbar ab Android 4.3 (API level 18).
Unabhängig von dem, was angegeben ist in showAsAction für ein Menü, es ist nicht angezeigt - es immer wieder schafft das overflow-Menü-Symbol, und stellt auch eine einzelne Menüpunkt unter dem Menü.
Hinzufügen möchten, im Menü um eine Aktivität wie diese:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_sizes, menu);
return true;
}
Und hier ist mein Menü xml:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_add_size"
android:title="@string/menu_add_item"
android:orderInCategory="10"
android:showAsAction="always"
android:icon="@android:drawable/ic_menu_add" />
</menu>
Ist es ein bug der neuen support library v7, oder einfach nur etwas Falsches mit dem code?
Ich habe mit dem ähnlichen code mit ActionBarSherlock viele Male zuvor.
InformationsquelleAutor der Frage Mcingwe | 2013-07-28
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vermutlich werden Sie nicht über die erforderlichen namespace:
Ersetzen
[yourapp]
mit Ihrem app-Namen oder ein beliebiger namespace das Herz begehrt überall.Andere Dinge lohnt:
ActionBarActivity
Prüfen, ob das Problem weiterhin besteht.
Android-Referenz-Dokumentation: Das Hinzufügen Von Aktion Schaltflächen. Hier ist der entsprechende text:
InformationsquelleAutor der Antwort Nikola Despotoski
Dachte, aus mir. Mit der support library v7 die showAsAction sollte gehen unter einem benutzerdefinierten namespace wie diese:
InformationsquelleAutor der Antwort Mcingwe
Stellen Sie außerdem sicher, dass Sie die Verwendung der richtigen inflater in ActionBarActivity.onCreateOptionsMenu () - Methode.
Richtige Lösung:
Falsche Lösung:
InformationsquelleAutor der Antwort petrnohejl
Für Fragmente
Menüs mit benutzerdefinierten namespace verhindern showAsAction zu zeigen.
Mit "android:" Präfix für showAsAction funktioniert, obwohl Android Studio Bemerkung Sie sollte Verwendung eines benutzerdefinierten name-space.
Diese ist mit Android SDK 22 und Support v4-Fragmente, im Fall, dass macht keinen Unterschied.
InformationsquelleAutor der Antwort Baker
Hab das gleiche problem, aber unter Android 5. Ich habe 3 Elemente, aber OS ignoriert mein Attribut "stets" und zeigte nur 2 Elemente. Hier meine Lösung:
InformationsquelleAutor der Antwort Lukas
In meinem Fall, die ich entfernen musste von meinem app zu bauen.gradle compile 'com.android.support:appcompat-v7:21.0.3'.
Bemerken: Meine min sdk = 14, und erstellt Projekt mit android studio eingefügt meine unnesessary Abhängigkeit.
Nachdem diese ersetzen, können Sie schreiben
android:showAsAction="immer"
InformationsquelleAutor der Antwort Anton Kizema
Stellen Sie außerdem sicher, dass Sie den richtigen Pfad für den namespace. Es wird nicht geben Sie eine Fehlermeldung aus, wenn es falsch ist.
Hatte ich
statt
Alles, was ich wusste war, dass es nicht funktioniert. Nicht sicher, wie ich es geschafft zu vergessen den /apk Teil des Weges, aber es passiert. Keine Fehlermeldung, nur ein flüchtiger Fehler auf die Spur.
InformationsquelleAutor der Antwort BeccaP
Möglicherweise ist dies nicht Ihr Fall, aber ich war mit
new MenuInflater(this).inflate(R.menu.my_menu, menu);
ändern, um
getMenuInflater().inflate(R.menu.my_menu, menu);
das problem behoben!
InformationsquelleAutor der Antwort Bakhshi
Hatte das gleiche Problem.
Hatte ich
statt
InformationsquelleAutor der Antwort Yohan Dahmani
nicht funktionieren,
mit supportLibraryVersion = '25.1.0'
compileSdkVersion = 25
siehe die "Warnung"
Verwenden sollten, app:showAsAction mit der appcompat-Bibliothek mit
xmlns:app="http://schemas.android.com/apk/res-auto" weniger... (Strg+F1)
Bei der Verwendung der appcompat-Bibliothek,Menü-Ressourcen beziehen sich auf den showAsAction in der app: - namespace,
nicht die android -: - namespace.
Ähnlich,wenn Sie nicht mit der appcompat-Bibliothek,
Sie sollten mit den android:showAsAction Attribut.
Ich denke, die warnen, werden ignoriert.
InformationsquelleAutor der Antwort Bill
hinzufügen von benutzerdefinierten namespace wie diese zu showAsAction und actionViewClass:
InformationsquelleAutor der Antwort Amirouche Zeggagh
Der einfachste Weg ist:
InformationsquelleAutor der Antwort Paweł