Hier ist ein Beispiel für den app
Namespace, den ich aus einer res/menu/main.xml
Datei gesehen habe
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity" >
<item android:id="@+id/action_settings"
android:title="@string/action_settings"
android:orderInCategory="100"
app:showAsAction="never" />
</menu>
Welchen Zweck erfüllt der app
Namespace? Ist es ein "Standard" Android XML Namespace? Sind dieselben Wertoptionen für dasselbe Attribut in zwei verschiedenen Namespaces (z . B. app:showAsAction
und android:showAsAction
) verfügbar?
Aus den Dokumenten :
android:showAsAction=["ifRoom" | "never" | "withText" | "always" | "collapseActionView"]
dh würde die Zeile im obigen Beispiel etwas anderes bedeuten, wenn das Attribut stattdessen wäre:
android:showAsAction="never"
Es sieht fast so aus, als wäre es eine Art "Unterklassen" -Mechanismus, aber ich kann anscheinend keine echte Dokumentation zum app
Namespace aus Google / Android-Quellen finden.
showAsAction
unter einem benutzerdefinierten Namespace, dass es auf neueren Plattformen wie erwartet funktioniert und auf älteren Plattformen ignoriert wird?android:
Versionen zu verwenden.showAsName
Attribut in einer älteren Bibliothek nicht unterstützt wird, wie ein benutzerdefinierter nicht mit der die Plattform Namespace zu ermöglichen , den Bereich möglichen Wert Möglichkeiten zu kennen (ifRoom
,never
usw.), und weiß , wie diese Optionen zu interpretieren? Ich gehe davon aus, dass "Attribute, die nicht existieren" Attribute bedeutet, für die es keine Implementierung in der Bibliothek gibt. Swappingandroid:
fürapp:
scheint kaum eine vollständige Abhilfe. Vermisse ich etwasapp:showAsName
) und alle möglichen Werte werden in Ihre App aufgenommen, wenn Sie dieappcompat-v7
Bibliothek einschließen (die sie in ihrerattrs.xml
Datei definiert). 2) Die AppCompat-Bibliothek (insbesondere ActionMenuView, die bei Verwendung automatisch verwendet wirdActionBarActivity
) analysiert und verwendet dieapp:showAsAction
, um Elemente auf allen API-Ebenen auf dieselbe Weise ordnungsgemäß anzuzeigen . Es erfordert sicherlich sowohl XML als auch Code, um zusammenzuarbeiten.Unter diesem Link erhalten Sie eine Erklärung
XML-Namespace
quelle