2011-08-19 6 views

risposta

97

In XML, xmlns dichiara uno spazio dei nomi. In realtà, quando si esegue:

<LinearLayout android:id> 
</LinearLayout> 

Invece di chiamare android:id, il xml userà http://schemas.android.com/apk/res/android:id per essere unico. Generalmente questa pagina non esiste (è un URI, non un URL), ma a volte è un URL che spiega lo spazio dei nomi utilizzato.

Lo spazio dei nomi ha praticamente gli stessi usi del nome del pacchetto in un'applicazione Java.

Here è una spiegazione.

Uniform Resource Identifier (URI)

Un Uniform Resource Identifier (URI) è una stringa di caratteri che identifica una risorsa Internet.

L'URI più comune è l'URL (Uniform Resource Locator) che identifica un indirizzo di dominio Internet. Un altro tipo non comune di URI è l'URN (Universal Resource Name).

Nei nostri esempi utilizzeremo solo gli URL.

+11

Allora perché abbiamo 'android: layout_width' invece di solo 'layout_width'? – Shashwat

+4

Allora come mai usiamo "LinearLayout" invece di "android: LinearLayout"? –

+0

Probabilmente perché LinearLayout fa parte dello spazio dei nomi root e android: gli attributi xxx fanno parte di uno spazio secondario ("http://schemas.android.com/apk/res/android/android/id") – NitroG42

20

xmlns riferisce alla XML namespace

Quando si utilizzano i prefissi in XML, deve essere definito un cosiddetto namespace per il prefisso. Lo spazio dei nomi è definito dall'attributo xmlns nel tag di inizio di un elemento. La dichiarazione dello spazio dei nomi ha la seguente sintassi. xmlns: prefix = "URI".

Nota: l'URI dello spazio dei nomi non viene utilizzato dal parser per cercare informazioni.

Lo scopo è assegnare allo spazio dei nomi un nome univoco. Tuttavia, spesso le aziende utilizzano lo spazio dei nomi come puntatore a una pagina Web contenente informazioni sullo spazio dei nomi.

2

xmlns: Android Questo è iniziare tag per definire namespace Android in Android. Questa è la convenzione standerd definita da Android Google Developer. quando si utilizza e layout predefinito o custome, quindi è necessario utilizzare questo spazio dei nomi.

Definisce lo spazio dei nomi di Android. Questo attributo deve sempre essere impostato su "http://schemas.android.com/apk/res/android".

deve leggere: http://developer.android.com/guide/topics/manifest/manifest-element.html

20

Per comprendere il motivo per cui xmlns:android=“http://schemas.android.com/apk/res/android” deve essere il primo nel file XML di layout Faremo conoscere i componenti con un esempio

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):

  • In informatica, un Uniform Resource Identifier (URI) è una stringa di caratteri utilizzato per identificare un nome di una risorsa.
  • Tale identificazione consente l'interazione con le rappresentazioni della risorsa su una rete, in genere il World Wide Web, utilizzando specifici protocolli .

Es: http://schemas.android.com/apk/res/android:id è l'URI qui


XML Namespace:

  • namespace XML sono utilizzati per la fornitura di elementi da nomi e attributi in un documento XML. xmlns:android descrive lo spazio dei nomi android .
  • Viene utilizzato in questo modo perché questa è una scelta di progettazione da parte di Google per gestire gli errori in fase di compilazione.
  • supponiamo anche che scriviamo il nostro widget di textview con diversi funzionalità rispetto ad Android textview, namespace Android aiuta a distinguere tra il nostro widget personalizzato textview e Android textview widget di
+6

questa risposta vale davvero la pena di leggerla rispetto a quelle precedenti che non spiegano chiaramente" PERCHE '? " – eRaisedToX

+0

Dicevi" Tale l'identificazione consente l'interazione con r rappresentazioni della risorsa su una rete, in genere il World Wide Web, utilizzando protocolli specifici. Es: http: //schemas.android.com/apk/res/android: id è l'URI qui "- Ma se non ho una connessione internet, come questo spazio dei nomi Android interagirà con le risorse su una rete? – kavie

4

Questa è solo la dichiarazione di spazio dei nomi XML . Utilizziamo questo spazio nome per specificare che gli attributi elencati di seguito appartengono a Android. Quindi iniziano con "android:"

In realtà è possibile creare i propri attributi personalizzati. Quindi, per evitare conflitti di nome in cui 2 attributi sono denominati la stessa cosa, ma si comportano diversamente, aggiungiamo il prefisso "android:" per indicare che si tratta di attributi Android.

Pertanto, questa dichiarazione Nome spazio deve essere inclusa nel tag di apertura della visualizzazione radice del file XML.

1

In XML, i nomi degli elementi sono definiti dallo sviluppatore. Ciò si traduce spesso in un conflitto quando si tenta di combinare documenti XML da diverse applicazioni XML. Un utente o un'applicazione XML non sapranno come gestire queste differenze. I conflitti dei nomi in XML possono essere facilmente evitati usando un prefisso del nome. Quando si utilizzano i prefissi in XML, è necessario definire uno spazio dei nomi per il prefisso. Lo spazio dei nomi può essere definito da un attributo xmlns nel tag di inizio di un elemento. La dichiarazione dello spazio dei nomi ha la seguente sintassi.xmlns: prefix = "URI".

1
  • Xmlns indica lo spazio dei nomi xml.
  • Viene creato per evitare conflitti di denominazione negli xml.
  • Per evitare conflitti di denominazione in qualsiasi altro modo, è necessario fornire ogni elemento con un prefisso.
  • per evitare l'uso ripetitivo del prefisso in ogni tag xml usiamo xmlns nella radice dell'xml. Quindi abbiamo il tag xmlns: Android =”http://schemas.android.com/apk/res/android
  • Ora Android qui significa semplicemente che stiamo assegnando il namespace ‘http://schemas.android.com/apk/res/android’ ad esso.
  • Questo spazio dei nomi non è un URL ma un URI noto anche come URN (nome di risorsa universale) che viene raramente utilizzato al posto dell'URI.
  • A causa di questo Android sarà responsabile di identificare gli elementi relativi Android nel documento XML che sarebbe Android: xxxxxxx ecc. Senza questo spazio dei nomi android: xxxxxxx non verrà riconosciuto.

a mettere in termini profani:

senza xmlns: Android =”http://schemas.android.com/apk/res/android” related tags android wont essere riconosciuti nel documento XML del nostro layout.

-1

È una dichiarazione di spazio dei nomi XML per specificare che gli attributi all'interno del gruppo di viste in cui è decelerato sono correlati ad Android.

+0

per favore elaboralo di più –

1
xmlns:android="http://schemas.android.com/apk/res/android" 

Questa è la forma di xmlns: android = "@ +/id". Ora per refernce che usiamo per esempio

android:layout_width="wrap_content" 
android:text="Hello World!" 

Un altro xmlns è

xmlns:app="http://schemas.android.com/apk/res-auto" 

che è in forma di xmlns: app = "@ +/id" e il suo uso è riportata qui sotto

app:layout_constraintBottom_toBottomOf="parent" 
app:layout_constraintLeft_toLeftOf="parent" 
1

Penso che sia chiaro con lo spazio dei nomi, dato che possiamo creare i nostri attributi e se l'attributo specificato dall'utente è uguale a quello di Android evita il conflitto dello spazio dei nomi.