В чем смысл xmlns: инструментов в макете Android XML?
Например, в:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
...
Нужно ли его указывать?
Ответы
Ответ 1
Он определяет пространство имен XML документа. Вы должны поместить его, иначе теги, такие как <RelativeLayout>
, не могут быть распознаны парсером.
Пространства имен - это способ для документов XML включать теги от разных поставщиков. С помощью атрибута xmlns
вы объявляете, что по умолчанию вы используете XML-элементы, определенные здесь: http://schemas.android.com/apk/res/android (обратите внимание, что эта ссылка (это обсуждение объясняет, почему).
Вы также объявляете дополнительное пространство имен tools
, которое не является вашим пространством имен по умолчанию, поэтому при ссылке на элементы или атрибуты, определенные там, вы должны добавить префикс tools
, например:
tools:context=".SomeActivity"
Ответ 2
Фактически, когда вы делаете:
<RelativeLayout android:id> </RelativeLayout>
Вместо вызова android: id, xml вызовет http://schemas.android.com/apk/res/android:id. Это просто страница, объявляющая все атрибуты и представления, которые вы можете использовать в своем xml.
Вот объяснение.
http://www.w3schools.com/xml/xml_namespaces.asp
Ответ 3
Ниже приведена полезная ссылка с портала Android dev: https://developer.android.com/studio/write/tool-attributes.html
В нем говорится
Android Studio поддерживает множество атрибутов XML в пространстве имен инструментов, которые позволяют использовать функции времени разработки (например, какой макет для отображения в фрагменте) или поведение во время компиляции (например, какой режим сжатия применяется к вашим XML-ресурсам), Когда вы создаете свое приложение, инструменты сборки удаляют эти атрибуты, поэтому не влияет на ваш размер APK или время выполнения.
то есть. пространство имен для инструментов помогает разрабатывать пользовательский интерфейс, а все атрибуты с префиксом "инструменты" будут удалены во время сборки.