Pourquoi cette ligne est-elle nécessaire dans le fichier de mise en page xml?
xmlns:android="http://schemas.android.com/apk/res/android"
Pourquoi cette ligne est-elle nécessaire dans le fichier de mise en page xml?
xmlns:android="http://schemas.android.com/apk/res/android"
Réponses:
En XML, xmlns déclare un espace de noms. En fait, lorsque vous faites:
<LinearLayout android:id>
</LinearLayout>
Au lieu d'appeler android:id
, le xml utilisera http://schemas.android.com/apk/res/android:id pour être unique. Généralement, cette page n'existe pas (c'est un URI, pas une URL), mais parfois c'est une URL qui explique l'espace de noms utilisé.
L'espace de noms a à peu près les mêmes utilisations que le nom du package dans une application Java.
Voici une explication.
Identificateur de ressource uniforme (URI)
Un identificateur de ressource uniforme (URI) est une chaîne de caractères qui identifie une ressource Internet.
L'URI le plus courant est l'URL (Uniform Resource Locator) qui identifie une adresse de domaine Internet. Un autre type d'URI pas si courant est le nom de ressource universel (URN).
Dans nos exemples, nous n'utiliserons que des URL.
android:layout_width
au lieu de juste layout_width
?
Pour comprendre pourquoi xmlns:android=“http://schemas.android.com/apk/res/android”
doit être le premier dans le fichier xml de mise en page Nous allons comprendre les composants à l'aide d'un exemple
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>
Indicateur de ressource uniforme (URI) :
Ex: http://schemas.android.com/apk/res/android:id
est l'URI ici
xmlns:android
décrit l'espace de noms Android.textview
widget avec des fonctionnalités différentes par rapport à Android textview
, l'espace de noms Android permet de faire la distinction entre notre textview
widget personnalisé et le textview
widget Android
xmlns fait référence à l' espace de noms XML
Lors de l'utilisation de préfixes dans XML, un soi-disant espace de noms pour le préfixe doit être défini. L'espace de noms est défini par l'attribut xmlns dans la balise de début d'un élément. La déclaration d'espace de noms a la syntaxe suivante. xmlns: prefix = "URI".
Remarque : l'URI de l'espace de noms n'est pas utilisé par l'analyseur pour rechercher des informations.
Le but est de donner à l'espace de noms un nom unique. Cependant, les entreprises utilisent souvent l'espace de noms comme pointeur vers une page Web contenant des informations d'espace de noms.
Il ne s'agit que de la déclaration d'espace de nom XML. Nous utilisons cet espace de noms pour spécifier que les attributs listés ci-dessous appartiennent à Android. Ainsi, ils commencent par " android: "
Vous pouvez en fait créer vos propres attributs personnalisés. Donc, pour éviter les conflits de nom où 2 attributs sont nommés de la même façon, mais se comportent différemment, nous ajoutons le préfixe « android: » pour signifier qu'il s'agit d'attributs Android.
Ainsi, cette déclaration d'espace de noms doit être incluse dans la balise d'ouverture de la vue racine de votre fichier XML.
xmlns: android Définit l'espace de noms Android. Cet attribut doit toujours être défini sur "http://schemas.android.com/apk/res/android".
se référer à http://developer.android.com/guide/topics/manifest/manifest-element.html
Pour mettre en termes simples:
sans xmlns: android = " http://schemas.android.com/apk/res/android " les balises liées à android ne seront pas reconnues dans le document xml de notre mise en page.
En XML, les noms d'éléments sont définis par le développeur. Cela entraîne souvent un conflit lorsque vous essayez de mélanger des documents XML à partir de différentes applications XML. Un utilisateur ou une application XML ne saura pas comment gérer ces différences. Les conflits de nom dans XML peuvent facilement être évités en utilisant un préfixe de nom. Lors de l'utilisation de préfixes dans XML, un espace de noms pour le préfixe doit être défini. L'espace de noms peut être défini par un attribut xmlns dans la balise de début d'un élément. La déclaration d'espace de noms a la syntaxe suivante. xmlns: prefix = "URI".
xmlns:android="http://schemas.android.com/apk/res/android"
C'est la forme de xmlns: android = "@ + / id". Maintenant, pour le référencer, nous utilisons par exemple
android:layout_width="wrap_content"
android:text="Hello World!"
Un autre xmlns est
xmlns:app="http://schemas.android.com/apk/res-auto"
qui se présente sous la forme de xmlns: app = "@ + / id" et son utilisation est donnée ci-dessous
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
xmlns: android Il s'agit de la balise de démarrage pour définir l'espace de noms Android dans Android. Il s'agit d'une convention standard définie par le développeur Android Google. lorsque vous utilisez et layout default ou custome, vous devez utiliser cet espace de noms.
Définit l'espace de noms Android. Cet attribut doit toujours être défini sur " http://schemas.android.com/apk/res/android ".
De la <manifes>
documentation de l' élément .
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns : est l'espace de nom xml et l' URL: " http://schemas.android.com/apk/res/android " n'est rien d'autre
XSD qui est [définition de schéma XML]: qui est utilisé pour définir les règles pour le fichier XML.
Exemple :
<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>
Laissez-moi vous expliquer quel genre de règles? .
Ce type de règles est défini dans XML XSD: " http://schemas.android.com/apk/res/android "
un peu tard mais j'espère que cela vous aidera.
Il s'agit d'une déclaration d'espace de nom XML afin de spécifier que les attributs qui se trouvent dans le groupe de vues dans lequel il est décéléré sont liés à Android.