Почему эта строка xmlns: android = "http://schemas.android.com/apk/res/android" должна быть первой в XML-файле макета? - PullRequest
127 голосов
/ 19 августа 2011

Зачем нужна эта строка в файле макета XML?

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

Ответы [ 11 ]

110 голосов
/ 19 августа 2011

В XML xmlns объявляет пространство имен. На самом деле, когда вы делаете:

<LinearLayout android:id>
</LinearLayout>

Вместо вызова android:id xml будет использовать http://schemas.android.com/apk/res/android:id, чтобы быть уникальным. Обычно эта страница не существует (это URI, а не URL), но иногда это URL, который объясняет используемое пространство имен.

Пространство имен практически такое же, как и имя пакета в приложении Java.

Здесь является объяснением.

Унифицированный идентификатор ресурса (URI)

Унифицированный идентификатор ресурса (URI) - это строка символов, которая идентифицирует интернет-ресурс.

Самым распространенным URI является Uniform Resource Locator (URL), который идентифицирует адрес интернет-домена. Другой, не очень распространенный тип URI - это универсальное имя ресурса (URN).

В наших примерах мы будем использовать только URL.

26 голосов
/ 10 сентября 2014

Чтобы понять, почему xmlns:android=“http://schemas.android.com/apk/res/android” должен быть первым в XML-файле макета, мы разберемся с компонентами, используя пример

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>

Унифицированный индикатор ресурсов (URI) :

  • В вычислениях универсальный идентификатор ресурса (URI) представляет собой строку символы, используемые для идентификации имени ресурса.
  • Такая идентификация позволяет взаимодействовать с представлениями ресурс по сети, как правило, World Wide Web, используя специальные протоколы.

Пример: http://schemas.android.com/apk/res/android:id здесь URI


Пространство имен XML :

  • Пространства имен XML используются для предоставления уникально именованных элементов и атрибуты в документе XML. xmlns:android описывает андроид Пространство имен.
  • Это используется так, потому что это выбор дизайна от Google, чтобы обрабатывать ошибки во время компиляции.
  • Также предположим, что мы пишем наш собственный textview виджет с разными функции по сравнению с Android textview, пространство имен Android помогает различать наш пользовательский textview виджет и Android textview виджет
23 голосов
/ 19 августа 2011

xmlns ссылается на пространство имен XML

. При использовании префиксов в XML необходимо определить так называемое пространство имен для префикса.Пространство имен определяется атрибутом xmlns в начальном теге элемента.Объявление пространства имен имеет следующий синтаксис.xmlns: prefix = "URI".

Примечание : URI пространства имен не используется анализатором для поиска информации.

Цель состоит в том, чтобы дать пространству именуникальное имя.Однако часто компании используют пространство имен в качестве указателя на веб-страницу, содержащую информацию о пространстве имен.

5 голосов
/ 10 августа 2016

Это всего лишь объявление пространства имен XML.Мы используем это пространство имен, чтобы указать, что перечисленные ниже атрибуты принадлежат Android.Таким образом, они начинаются с " android: "

Вы можете создавать свои собственные атрибуты.Поэтому, чтобы предотвратить конфликт имен, когда два атрибута названы одинаково, но ведут себя по-разному, мы добавляем префикс " android: ", чтобы указать, что это атрибуты Android.

Таким образом, этоОбъявление пространства имен должно быть включено в открывающий тег корневого представления вашего XML-файла.

5 голосов
/ 22 марта 2012

xmlns: android Определяет пространство имен Android.Этот атрибут всегда должен быть установлен на "http://schemas.android.com/apk/res/android".

ссылка http://developer.android.com/guide/topics/manifest/manifest-element.html

2 голосов
/ 13 октября 2016
  • Xmlns означает пространство имен xml.
  • Он создан, чтобы избежать конфликтов имен в xml.
  • Чтобы избежать конфликтов имен другими способами, нам нужно предоставить каждому элементу префикс.
  • чтобы избежать повторного использования префикса в каждом теге xml, мы используем xmlns в корне xml. Следовательно, у нас есть тег xmlns: android = ”http://schemas.android.com/apk/res/android
  • Теперь android здесь просто означает, что мы назначаем ему пространство имен «http://schemas.android.com/apk/res/android”.
  • Это пространство имен является не URL, а URI, также известным как URN (универсальное имя ресурса), которое редко используется вместо URI.
  • Из-за этого android будет отвечать за определение элементов, связанных с android, в документе xml, который будет android: xxxxxxx и т. Д. Без этого пространства имен android: xxxxxxx не будет распознан.

Для обозначения непрофессионала:

без xmlns: android = ”http://schemas.android.com/apk/res/android” теги, связанные с android, не будут распознаваться в документе xml нашего макета.

2 голосов
/ 10 августа 2016

В XML имена элементов определяются разработчиком.Это часто приводит к конфликту при попытке смешать документы XML из разных приложений XML.Пользователь или приложение XML не будут знать, как справиться с этими различиями.Конфликты имен в XML можно легко избежать, используя префикс имени.При использовании префиксов в XML необходимо определить пространство имен для префикса. Пространство имен может быть определено атрибутом xmlns в начальном теге элемента. Объявление пространства имен имеет следующий синтаксис.XMLNS: префикс = "URI"

.
2 голосов
/ 07 сентября 2014

xmlns: android Это начальный тег для определения пространства имен Android в Android. Это стандартное соглашение, определенное Android-разработчиком Google. когда вы используете макет по умолчанию или обычай, то должны использовать это пространство имен.

Определяет пространство имен Android. Этот атрибут всегда должен быть установлен на "http://schemas.android.com/apk/res/android".

Из документации <manifes> .

1 голос
/ 06 мая 2017

Я думаю, это проясняется с пространством имен, так как мы можем создавать свои собственные атрибуты, и если указанный пользователем атрибут такой же, как у Android, это позволяет избежать конфликта в пространстве имен.

1 голос
/ 17 марта 2017
xmlns:android="http://schemas.android.com/apk/res/android"

Это форма xmlns: android = "@ + / id".Теперь для ссылки на него мы используем, например,

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

Другой xmlns - это

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

, который имеет вид xmlns: app = "@ + / id", и его использование приведено ниже.

 app:layout_constraintBottom_toBottomOf="parent"
 app:layout_constraintLeft_toLeftOf="parent"
...