Подтвердить что ты не робот

Файлы и файлы макета Android XML

Плагины Android определены в XML с этим пространством имен, объявленным в корневом элементе:

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

Пример элемента:

<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" />
  • Почему используется префикс android вместо того, чтобы опускать его как xmlns="http...?
  • Почему префикс используется только в атрибутах, а не в элементах?
4b9b3361

Ответ 1

Интересный вопрос! он уверен, что немного странно.

  • Выбор Google был как можно более строгим в пространстве имен для обработки ошибок во время компиляции.
  • Префикс не используется для элементов, потому что тезисы представляют классы Java: com.android.widget.TextView (com.android.widget.* всегда может быть усечен). Пространство имен java этого класса будет автоматически разрешено во время компиляции, поэтому пространство имен xml, представляющее полное доменное пространство java, не приветствуется здесь. Но атрибуты могут быть сопоставлены с любым из унаследованных классов Java элемента Element. Следовательно, пространство имен на атрибутах разрешает наследование.

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

Смотрите два ответа на это сообщение в блоге от Dianne Hackborn, известного инженера-разработчика Android, работающего в google: http://www.elharo.com/blog/software-development/xml/2008/09/16/android-xml-weirdness/ p >