Warum wird diese Zeile in der XML-Layoutdatei benötigt?
xmlns:android="http://schemas.android.com/apk/res/android"
Warum wird diese Zeile in der XML-Layoutdatei benötigt?
xmlns:android="http://schemas.android.com/apk/res/android"
Antworten:
In XML deklariert xmlns einen Namespace. In der Tat, wenn Sie tun:
<LinearLayout android:id>
</LinearLayout>
Anstatt aufzurufen android:id
, verwendet die XML-Datei http://schemas.android.com/apk/res/android:id , um eindeutig zu sein. Im Allgemeinen existiert diese Seite nicht (es ist eine URI, keine URL), aber manchmal ist es eine URL, die den verwendeten Namespace erklärt.
Der Namespace hat fast die gleichen Verwendungszwecke wie der Paketname in einer Java-Anwendung.
Hier ist eine Erklärung.
Uniform Resource Identifier (URI)
Ein Uniform Resource Identifier (URI) ist eine Zeichenfolge, die eine Internetressource identifiziert.
Die häufigste URI ist die URL (Uniform Resource Locator), die eine Internetdomänenadresse identifiziert. Ein anderer, nicht so häufiger URI-Typ ist der Universal Resource Name (URN).
In unseren Beispielen werden nur URLs verwendet.
android:layout_width
statt nur layout_width
?
Um zu verstehen, warum xmlns:android=“http://schemas.android.com/apk/res/android”
dies der erste in der Layout-XML-Datei sein muss, werden wir die Komponenten anhand eines Beispiels verstehen
Sample
:: ::
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/container" >
</FrameLayout>
Uniform Resource Indicator (URI) :
Beispiel: http://schemas.android.com/apk/res/android:id
ist die URI hier
xmlns:android
beschreibt den Android-Namespace.textview
Widget mit anderen Funktionen als Android textview
. Der Android-Namespace hilft bei der Unterscheidung zwischen unserem benutzerdefinierten textview
Widget und dem Android-
textview
Widgetxmlns bezieht sich auf den XML-Namespace
Bei der Verwendung von Präfixen in XML muss ein sogenannter Namespace für das Präfix definiert werden. Der Namespace wird durch das Attribut xmlns im Start-Tag eines Elements definiert. Die Namespace-Deklaration hat die folgende Syntax. xmlns: prefix = "URI".
Hinweis : Der Namespace-URI wird vom Parser nicht zum Nachschlagen von Informationen verwendet.
Der Zweck besteht darin, dem Namespace einen eindeutigen Namen zu geben. Häufig verwenden Unternehmen den Namespace jedoch als Zeiger auf eine Webseite mit Namespace-Informationen.
Dies ist nur die XML-Namensraumdeklaration. Wir verwenden diesen Namensraum, um anzugeben, dass die unten aufgeführten Attribute zu Android gehören. Sie beginnen also mit " android: "
Sie können tatsächlich Ihre eigenen benutzerdefinierten Attribute erstellen. Um die Namenskonflikte zu vermeiden, bei denen zwei Attribute gleich benannt sind, sich jedoch unterschiedlich verhalten, fügen wir das Präfix " android: " hinzu, um anzuzeigen, dass es sich um Android-Attribute handelt.
Daher muss diese Namensraumdeklaration im Eröffnungs-Tag der Stammansicht Ihrer XML-Datei enthalten sein.
xmlns: android Definiert den Android-Namespace. Dieses Attribut sollte immer auf "http://schemas.android.com/apk/res/android" gesetzt sein.
Siehe http://developer.android.com/guide/topics/manifest/manifest-element.html
Um es mit Laien zu sagen:
ohne xmlns: android = " http://schemas.android.com/apk/res/android " androidbezogene Tags werden im xml-Dokument unseres Layouts nicht erkannt.
In XML werden Elementnamen vom Entwickler definiert. Dies führt häufig zu einem Konflikt, wenn versucht wird, XML-Dokumente aus verschiedenen XML-Anwendungen zu mischen. Ein Benutzer oder eine XML-Anwendung weiß nicht, wie er mit diesen Unterschieden umgehen soll. Namenskonflikte in XML können mithilfe eines Namenspräfixes leicht vermieden werden. Bei Verwendung von Präfixen in XML muss ein Namespace für das Präfix definiert werden. Der Namespace kann durch ein xmlns-Attribut im Start-Tag eines Elements definiert werden. Die Namespace-Deklaration hat die folgende Syntax. xmlns: prefix = "URI".
xmlns:android="http://schemas.android.com/apk/res/android"
Dies ist eine Form von xmlns: android = "@ + / id". Um es zu verweisen, verwenden wir zum Beispiel
android:layout_width="wrap_content"
android:text="Hello World!"
Eine andere XML ist
xmlns:app="http://schemas.android.com/apk/res-auto"
Dies ist in Form von xmlns: app = "@ + / id" und seine Verwendung ist unten angegeben
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
xmlns: android Dies ist das Start-Tag zum Definieren des Android-Namespace in Android. Dies ist eine Standardkonvention, die vom Android-Google-Entwickler definiert wird. Wenn Sie Standard oder Custome verwenden und gestalten, muss dieser Namespace verwendet werden.
Definiert den Android-Namespace. Dieses Attribut sollte immer auf " http://schemas.android.com/apk/res/android " gesetzt sein.
Aus der <manifes>
Elementdokumentation .
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns : ist der XML-Namensraum und die URL: " http://schemas.android.com/apk/res/android " ist nichts anderes als
XSD ist [XML-Schemadefinition]: Wird verwendet, um Regeln für XML-Dateien zu definieren.
Beispiel:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="4dp"
android:hint="User Name"
/>
</LinearLayout>
Lassen Sie mich erklären, welche Art von Regeln? .
Solche Regeln werden in XML XSD definiert: " http://schemas.android.com/apk/res/android "
ein bisschen spät, aber ich hoffe das hilft dir.
Es handelt sich um eine XML-Namensraumdeklaration, um anzugeben, dass die Attribute innerhalb der Ansichtsgruppe, in der sie abgebremst wird, mit Android zusammenhängen.