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

103

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

xmlns:android="http://schemas.android.com/apk/res/android" 
  • 0
    Это не должно быть на первой линии?
Теги:
android-activity
layout
xml-namespaces

11 ответов

100
Лучший ответ

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

<LinearLayout android:id>
</LinearLayout>

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

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

Здесь объяснение.

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

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

Наиболее распространенным URI является Единый указатель ресурсов (URL), который определяет адрес домена в Интернете. Другой, не очень распространенный тип URI - это имя универсального ресурса (URN).

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

  • 12
    Тогда почему у нас есть android:layout_width вместо просто layout_width ?
  • 4
    Тогда почему мы используем «LinearLayout» вместо «android: LinearLayout»?
Показать ещё 8 комментариев
21

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

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

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

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

17

Чтобы понять, почему 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 и андроид textview виджет
  • 6
    этот ответ действительно стоит прочитать по сравнению с вышеупомянутыми, в которых не было четкого объяснения "ПОЧЕМУ?"
  • 0
    Вы говорили: «Такая идентификация позволяет взаимодействовать с представлениями ресурса в сети, обычно во всемирной паутине, с использованием определенных протоколов. Например : schemas.android.com/apk/res/android:id - здесь URI» - Но если у меня нет подключения к Интернету, как это пространство имен Android будет взаимодействовать с ресурсами по сети?
5

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

обратитесь http://developer.android.com/guide/topics/manifest/manifest-element.html

4

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

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

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

2

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

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

должен читать: http://developer.android.com/guide/topics/manifest/manifest-element.html

1
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"
1
  • Xmlns означает пространство имен xml.
  • Он создан, чтобы избежать конфликтов имен в xmls.
  • Чтобы избежать именования конфликтов каким-либо другим способом, нам необходимо предоставить каждому элементу префикс.
  • чтобы избежать повторного использования префикса в каждом теге 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 элементов в XML-документе, который будет андроид: xxxxxxx и т.д. Без этого пространства имен android: xxxxxxx не будет распознаваться.

Чтобы поставить термин laymans:

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

1

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

-1

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

-2

Это объявление пространства имен XML, чтобы указать, что атрибуты, входящие в группу замещения, которые он замедлял, связаны с андроидом.

  • 0
    пожалуйста, уточни это подробнее

Ещё вопросы

Сообщество Overcoder
Наверх
Меню