Справочник по атрибутам инструментов (представления)

Основные понятия и реализация Jetpack Compose

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

Чтобы использовать эти атрибуты, добавьте пространство имен tools в корневой элемент каждого XML-файла, в котором вы хотите их использовать, как показано ниже:

<RootTag xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" >

Атрибуты для обработки ошибок

Следующий атрибут помогает подавлять предупреждения lint:

tools:targetApi

Для каких элементов подходит: для любых.

Используется в Lint.

Этот атрибут работает так же, как аннотация @TargetApi в коде Java. Он позволяет указать уровень API (в виде целого числа или кодового названия), который поддерживает этот элемент.

Это указывает инструментам, что вы считаете, что этот элемент и любые дочерние элементы используются только на указанном уровне API или выше. В этом случае инструмент Lint не будет предупреждать вас, если элемент или его атрибуты недоступны на уровне API, указанном в качестве minSdkVersion.

Например, вы можете использовать этот атрибут, потому что GridLayout доступен только на уровне API 14 и выше, но вы знаете, что этот макет не используется в вашем коде для более ранних версий:

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:targetApi="14" >

Однако мы рекомендуем использовать вместо него GridLayout из библиотеки поддержки.

Атрибуты представления во время разработки

Приведенные ниже атрибуты определяют характеристики макета, которые видны только в предварительном просмотре макета Android Studio.

tools: вместо android:

Для кого: <View>

Используется редактором макетов Android Studio.

Вы можете вставить примеры данных в предварительный просмотр макета, используя префикс tools: вместо android: с любым атрибутом <View> из фреймворка Android. Это полезно, когда значение атрибута не заполняется до выполнения и вы хотите увидеть эффект в предварительном просмотре макета.

Например, если значение атрибута android:text задается во время выполнения или вы хотите посмотреть макет со значением, отличным от значения по умолчанию, вы можете добавить tools:text, чтобы указать текст только для предварительного просмотра макета.

Атрибут tools:text задает Google Voice в качестве значения для предварительного просмотра макета.
Рисунок 1. Атрибут tools:text задает значение Google Voice для предварительного просмотра макета.

Вы можете добавить атрибут пространства имен android:, который используется во время выполнения, и соответствующий атрибут tools:, который переопределяет атрибут времени выполнения только в предварительном просмотре макета.

Вы также можете использовать атрибут tools:, чтобы отменить настройку атрибута только для предварительного просмотра макета. Например, если у вас есть FrameLayout с двумя дочерними элементами, но вы хотите видеть только один из них в предварительном просмотре макета, вы можете сделать один из них невидимым в предварительном просмотре макета, как показано здесь:

<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="First" />

<Button
    android:id="@+id/button2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Second"
    tools:visibility="invisible"  />

При использовании редактора макетов в режиме дизайна окно Свойства позволяет редактировать некоторые атрибуты представления во время разработки. Каждый атрибут времени разработки обозначается значком гаечного ключа Значок гаечного ключа рядом с названием атрибута, чтобы отличить его от реального атрибута с тем же названием.

tools:context

Для кого: для любого корневого сертификата.<View>

Используется: Lint, Android Studio Layout Editor.

Этот атрибут объявляет, с каким действием по умолчанию связан этот макет. Это позволяет включить в редакторе или предварительном просмотре макета функции, для которых требуются сведения об объекте activity, например о теме макета в предварительном просмотре и о том, куда вставлять обработчики onClick, созданные из быстрого исправления, как показано на рисунке 2.

Быстрое исправление для атрибута onClick работает, только если вы задали tools:context.
Рисунок 2. Быстрое исправление для атрибута onClick работает, только если вы задали значение атрибута tools:context.

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

Пример:

<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity" >

tools:itemCount

Для кого: <RecyclerView>

Используется в Android Studio Layout Editor.

Для заданного RecyclerView этот атрибут указывает количество элементов, которые редактор макетов должен отобразить в окне Предварительный просмотр.

Пример:

<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/recyclerView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:itemCount="3"/>

tools:layout

Для кого: <fragment>

Используется в Android Studio Layout Editor.

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

Пример:

<fragment android:name="com.example.main.ItemListFragment"
    tools:layout="@layout/list_content" />

tools:listitem, tools:listheader, tools:listfooter

Для чего предназначено: <AdapterView> (и подклассы, например <ListView>).

Используется в Android Studio Layout Editor.

Эти атрибуты указывают, какой макет показывать в предварительном просмотре макета для элементов списка, заголовка и нижнего колонтитула. Все поля данных в макете заполняются числовыми значениями, например "Элемент 1", чтобы элементы списка не повторялись.

Пример:

<ListView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@android:id/list"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:listitem="@layout/sample_list_item"
    tools:listheader="@layout/sample_list_header"
    tools:listfooter="@layout/sample_list_footer" />

tools:showIn

Для чего используется. Любой корневой элемент <View> в макете, на который ссылается <include>.

Используется в Android Studio Layout Editor.

Этот атрибут позволяет указать макет, в котором используется текущий макет, с помощью <include>. Это позволяет просматривать и редактировать текущий файл в том виде, в котором он будет отображаться в родительском макете.

Пример:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:text="@string/hello_world"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    tools:showIn="@layout/activity_main" />

Теперь в окне предварительного просмотра макета показано, как макет TextView выглядит внутри макета activity_main.

tools:menu

Для кого: для любого корневого сертификата.<View>

Используется в Android Studio Layout Editor.

Этот атрибут указывает, какое меню предварительного просмотра макета показывается на панели приложения. Значение – один или несколько идентификаторов меню, разделенных запятыми, без префикса @menu/ или аналогичного и без расширения .xml.

Пример:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:menu="menu1,menu2" />

tools:minValue, tools:maxValue

Для кого: <NumberPicker>

Используется в Android Studio Layout Editor.

Эти атрибуты задают минимальное и максимальное значения для представления NumberPicker.

Пример:

<NumberPicker xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/numberPicker"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    tools:minValue="0"
    tools:maxValue="10" />

tools:openDrawer

Для кого: <DrawerLayout>

Используется в Android Studio Layout Editor.

Этот атрибут позволяет открыть DrawerLayout в режиме предварительного просмотра.

Вы также можете изменить способ отображения макета в редакторе, передав одно из следующих значений:

Таблица 1. Значения, определяющие, как редактор макетов отображает DrawerLayout

КонстантаЗначениеОписание
end800005Переместить объект в конец контейнера, не меняя его размер.
left3Переместить объект к левому краю контейнера, не меняя его размер.
right5Переместить объект в правую часть контейнера, не меняя его размер.
start800003Переместить объект в начало контейнера, не меняя его размер.

Пример:

<androidx.drawerlayout.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:openDrawer="start" />

Ресурсы: "@tools:sample/*"

Для чего предназначено. Любое представление, поддерживающее текст или изображения в интерфейсе.

Используется в Android Studio Layout Editor.

Этот атрибут позволяет вставлять в представление данные или изображения-плейсхолдеры. Например, чтобы проверить, как макет ведет себя с текстом, прежде чем вы окончательно определитесь с текстом пользовательского интерфейса для своего приложения, вы можете использовать текст-плейсхолдер следующим образом:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    tools:text="@tools:sample/lorem" />

В таблице ниже описаны типы данных-плейсхолдеров, которые можно внедрить в макеты.

Таблица 2. Данные-плейсхолдеры для макетов

Значение атрибутаОписание данных плейсхолдера
@tools:sample/full_names Полные имена, случайно сгенерированные из комбинации @tools:sample/first_names и @tools:sample/last_names
@tools:sample/first_names Распространенные имена
@tools:sample/last_names Распространенные фамилии
@tools:sample/cities Названия городов со всего мира
@tools:sample/us_zipcodes Случайно сгенерированные почтовые индексы США
@tools:sample/us_phones Случайно сгенерированные номера телефонов в следующем формате: (800) 555-xxxx
@tools:sample/lorem Текст-плейсхолдер на латыни
@tools:sample/date/day_of_week Случайные даты и время в указанном формате.
@tools:sample/date/ddmmyy
@tools:sample/date/mmddyy
@tools:sample/date/hhmm
@tools:sample/date/hhmmss
@tools:sample/avatars Векторные изображения, которые можно использовать в качестве аватаров профиля.
@tools:sample/backgrounds/scenic Изображения, которые можно использовать в качестве фона