Why this line xmlns: android="http://schemas.android.com/apk/res/android" must be the first in the layout xml file?
porque é que esta linha é necessária no ficheiro de layout xml?
xmlns:android="http://schemas.android.com/apk/res/android"
11 answers
Em XML, o xmlns declara um espaço de nomes. Na verdade, quando você faz:
<LinearLayout android:id>
</LinearLayout>
Em vez de chamar android:id
, o xml irá usar http://schemas.android.com/apk/res/android:id ser único. Geralmente esta página não existe (é um URI, não uma URL), mas às vezes é uma URL que explica o espaço de nomes usado.
O espaço de nomes tem praticamente os mesmos usos que o nome do pacote em uma aplicação Java.
Uniforme Identificador do recurso (URI)
Um identificador uniforme de recursos (URI) é uma cadeia de caracteres que identifica um recurso de Internet.
O URI mais comum é O Localizador de recursos uniforme (URL) que identifica um endereço de domínio na Internet. Outro tipo, não tão comum de URI é o nome do recurso Universal (URN).
Nos nossos exemplos só usaremos URLs.
O Xmlns refere-se ao espaço de nomes XML
Ao usar prefixos em XML, deve ser definido um espaço de nomes para o prefixo. O espaço de nomes é definido pelo atributo xmlns na tag inicial de um elemento. A declaração do espaço de nomes tem a seguinte sintaxe. xmlns: prefixo= "URI".
Nota : o URI do espaço de nomes não é usado pelo analisador para procurar informações.
O objectivo é dar ao espaço de nomes um nome único. No entanto, muitas vezes as empresas utilizam o espaço de nomes como um ponteiro para uma página web contendo informações de espaço de nomes.
Para entender por que xmlns:android=“http://schemas.android.com/apk/res/android”
deve ser o primeiro no ficheiro layout xml, compreenderemos os componentes usando um exemplo
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>
Indicador uniforme dos recursos(URI)):
- em computação, um identificador de recurso uniforme (URI) é uma cadeia de caracteres usados para identificar um nome de um recurso.
- essa identificação permite a interacção com as representações do recurso sobre uma rede, normalmente a World Wide Web, usando protocolo.
Ex: http://schemas.android.com/apk/res/android:id
é o URI aqui
Espaço de nomes em XML:
- os espaços de nomes XML são usados para fornecer elementos com nomes únicos e atributos num documento XML. Descreve o andróide. espaco.
- é usado desta forma porque esta é uma escolha de design pelo google para lidar com os erros na hora de compilação.
- também suponhamos que escrevemos o nosso próprio
textview
widget com diferentes recurso comparado com o androidtextview
, o namespace do android ajuda a distinguir entre o nosso elemento personalizadotextview
e o androidtextview
widget
Xmlns: android Define o espaço de nomes Android. Este atributo deve ser sempre definido como "http://schemas.android.com/apk/res/android".
Ver http://developer.android.com/guide/topics/manifest/manifest-element.html
Isto é apenas a declaração de espaço do nome XML. Usamos este espaço de nome, a fim de especificar que os atributos listados abaixo, pertence ao Android. Assim eles começam com " Andróide:"
Você pode realmente criar os seus próprios atributos personalizados. Assim, para prevenir os conflitos de nomes onde dois atributos são nomeados a mesma coisa, mas se comportar de forma diferente, adicionamos o prefixo "android: " para significar que estes são atributos Android.
Assim, esta declaração de espaço de nome deve seja incluído na marca de abertura da janela de raiz do seu ficheiro XML.
Xmlns: android Esta é a marca inicial para definir o espaço de nomes do android no Android. Esta é a Convenção standerd definida pelo desenvolvedor Google android. quando você está usando e layout default ou custome, então deve usar este espaço de nomes.
Define o espaço de nomes Android. Este atributo deve ser sempre definido como "http://schemas.android.com/apk/res/android".
Deve ler-se : http://developer.android.com/guide/topics/manifest/manifest-element.html
Em XML, os nomes dos elementos são definidos pelo programador. Isso muitas vezes resulta em um conflito ao tentar misturar documentos XML de diferentes aplicações XML. Um usuário ou uma aplicação XML não saberá como lidar com essas diferenças. Conflitos de nomes em XML podem ser facilmente evitados usando um prefixo de nome. Ao usar prefixos em XML, um espaço de nomes para o prefixo deve ser definido.O espaço de nomes pode ser definido por um atributo xmlns na tag inicial de um elemento.A declaração do espaço de nomes tem o sintaxe. xmlns: prefixo= "URI".
- Xmlns significa espaço de nomes xml.
- é criado para evitar conflitos de nomes no xml.
- a fim de evitar conflitos de nome de qualquer outra forma, precisamos fornecer a cada elemento um prefixo.
- para evitar o uso repetitivo do prefixo em cada tag xml, usamos xmlns na raiz do xml. Por isso, temos a tag xmlns:android="http://schemas.android.com/apk/res/android" Agora android significa simplesmente que estamos a atribuir o espaço de nomes " http://schemas.android.com/apk/res/android a ele.
- este espaço de nomes não é um URL, mas um URI também conhecido como URN(nome do recurso universal) que raramente é usado no lugar do URI.
- Devido a este android será responsável por identificar os elementos relacionados ao android no documento xml que seria android: xxxxxx etc. Sem este namespace android: xxxxxxx não será reconhecido.
Para colocar o termo leigo :
Sem xmlns: android= " http://schemas.android.com/apk/res/android " as marcas relacionadas com o android não serão reconhecidas no documento xml do nosso layout.
xmlns:android="http://schemas.android.com/apk/res/android"
Esta é a forma de xmlns: android = "@ + / id". Agora para se referir a ele Nós usamos por exemplo
android:layout_width="wrap_content"
android:text="Hello World!"
Outro xmlns é
xmlns:app="http://schemas.android.com/apk/res-auto"
Que é sob a forma de xmlns: app = "@ + / id " e a sua utilização é dada abaixo
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
Eu acho que deixa claro com o espaço de nomes, como podemos criar nossos próprios atributos e se o atributo especificado pelo Usuário é o mesmo que o Android que evita o conflito do espaço de nomes.
É uma declaração de espaço de nome XML a fim de especificar que os atributos que estão dentro do grupo de visualização em que está desacelerado estão relacionados com o android.