Wo sind die Schemata (DTD oder XML-Schema) für die auf Android verwendeten XML-Dateien wie AndroidManifest.xml oder die Layouts?
Antworten
Zu viele Anzeigen?Im Allgemeinen muss die Definition eines Namespace in XML keine real existierende URL sein, sondern nur ein weltweit eindeutiger String (daher bevorzugt man die Verwendung eigener URLs). Natürlich wäre es schön, wenn diese URL das XML-Schema (oder schlimmer noch, die DTD) enthält. Es wäre auch sehr schön, wenn jemand Android Ressource Schemata erstellen würde. Ich könnte ihm dabei als Bachelorarbeit in CS helfen. - Prof. Solymosi, Berlin
Das XML-Schema scheint nicht dokumentiert zu sein, aber es gibt hier eine nützliche Liste aller Layout-Objekte und ihrer zulässigen Attribute:
http://developer.Android.com/reference/Android/R.styleable.html#lfields
Habe um das gleiche Thema gesucht, um herauszufinden, wie Android Studio die Autovervollständigung & Zeug in XML tut, und ich war auch hoffnungsvoll, einige XSD oder etwas zu finden, aber:
In Android verwenden wir eine Mischung aus statischen und dynamischen DOM-Definitionen:
1 - Einige Dateien werden mit Hilfe von Klassen und Anmerkungen definiert, siehe z.B. Manifest (Hinweis: um korrekte Informationen zu erhalten, sollten Sie höchstwahrscheinlich das zusammengeführte Manifest verwenden, aber das liegt außerhalb des Rahmens dieser dieses Dokuments).
2-Sonstige Informationen werden aus Ressourcen gelesen, wobei Namenskonventionen verwendet werden, um ein Stilelement zu finden, das relevante Attribute enthält Wenn wir zum Beispiel ein Tag erkennen, das einer View-Unterklasse in einer Layout-Datei entspricht (z. B. "TextView"), finden wir das entsprechende Styleable, sehen uns die darin enthaltenen Attribute an und registrieren die DOM-Erweiterungen für das gegebene Tag, die diesen attr-Ressourcen entsprechen. Siehe AttributeProcessingUtil und SubtagsProcessingUtil für Code zum Lesen von Styleables und AndroidDomExtender für die Erweiterung, die sich in das das DOM System einfügt.
3 - Manchmal wird das Stilelement statisch festgelegt, aber die Attribute werden dynamisch gelesen, um mit der verwendeten Plattformversion auf dem neuesten Stand zu bleiben im Projekt. Dies geschieht mit der Annotation @Styleable.
So wird zum Beispiel ein Shape Drawable XML in den Quellcodes von Android Studio definiert:
@DefinesXml
@Styleable("GradientDrawable")
public interface Shape extends DrawableDomElement {
@Styleable("DrawableCorners")
List<DrawableDomElement> getCornerses();
@Styleable("GradientDrawableGradient")
List<DrawableDomElement> getGradients();
@Styleable("GradientDrawablePadding")
List<DrawableDomElement> getPaddings();
@Styleable("GradientDrawableSize")
List<DrawableDomElement> getSizes();
@Styleable("GradientDrawableSolid")
List<DrawableDomElement> getSolids();
@Styleable("GradientDrawableStroke")
List<DrawableDomElement> getStrokes();
}
Die Styleables (wie GradientDrawablePadding) werden in der attrs.xml von Android definiert
Wenn Sie ein Problem mit einem Schema wie http://schemas.android.com/apk/res/android
erkannt wird, können Sie es unter Einstellungen (oder Präferenzen ) > Sprachen & Rahmenwerke > Schemata und DTDs . Klicken Sie auf das +-Zeichen unter "Ignorierte Schemata und DTDs" und fügen Sie die Schema-URL hinzu. Sie sollten nun keine Code-Fehler/Warnungen mehr erhalten.