Что означает xmlns:tools в Android XML layout?

Например, в:

<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" >
...

Я должен поставить это?

4 ответа

Решение

Он определяет пространство имен XML документа. Вы должны поставить его, в противном случае теги, как <RelativeLayout> может быть не распознан парсером.

Пространства имен позволяют XML-документам включать теги разных поставщиков. Используя xmlns Вы заявляете, что по умолчанию вы используете элементы XML, определенные здесь: http://schemas.android.com/apk/res/android (обратите внимание, что эта ссылка не работает - это обсуждение объясняет почему).

Вы также объявляете дополнительное пространство имен, tools, которое не является вашим пространством имен по умолчанию, поэтому при обращении к элементам или атрибутам, определенным там, вы должны добавить tools префикс, например:

tools:context=".SomeActivity"

Ниже приводится полезная ссылка с портала Android для разработчиков: https://developer.android.com/studio/write/tool-attributes.html

Это говорит

Android Studio поддерживает различные атрибуты XML в пространстве имен инструментов, которые включают функции времени разработки (например, какой макет показывать во фрагменте) или поведение во время компиляции (например, какой режим сжатия применяется к вашим ресурсам XML). При сборке приложения инструменты сборки удаляют эти атрибуты, поэтому они не влияют на размер вашего APK или поведение во время выполнения.

то есть пространство имен инструментов помогает проектировать пользовательский интерфейс, и все атрибуты с префиксом "инструменты" будут удалены во время сборки.

На самом деле, когда вы делаете:

<RelativeLayout android:id> </RelativeLayout>

Вместо вызова Android: ID, XML будет называть http://schemas.android.com/apk/res/android:id. Это просто страница, которая объявляет все атрибуты и представления, которые вы можете использовать в своем xml.

Вот объяснение. http://www.w3schools.com/xml/xml_namespaces.asp

В Android этот атрибут используется для определения пространства имен XML для префикса пространства имен «инструменты». Он обычно используется в XML-файлах макета для предоставления дополнительных инструментов и информации, помогающих в процессе разработки. Пространство имен предоставляет атрибуты, которые используются во время проектирования и разработки приложения, но игнорируются или удаляются во время компиляции и выполнения.

Вот пример того, какАтрибут обычно используется в XML-файле макета Android:

      <LinearLayout
    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"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        tools:text="Hello World!"
        android:textColor="@color/black" />

</LinearLayout>

В приведенном выше примереАтрибут используется для указания класса активности, связанного с макетом, для целей рендеринга и предварительного просмотра во время разработки. Атрибут используется для предоставления текста-заполнителя, который отображается только в редакторе макета Android Studio, но не во время выполнения.

Используяпространства имен разработчики могут настраивать внешний вид и поведение своих макетов специально для целей проектирования и тестирования, не затрагивая окончательный производственный код.

Другие вопросы по тегам