Основные понятия и реализация 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 для предварительного просмотра макета.Вы можете добавить атрибут пространства имен 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.Вы можете указать название класса действия, используя тот же префикс с точкой, что и в файле манифеста (без полного названия пакета).
Пример:
<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
| Константа | Значение | Описание |
|---|---|---|
end | 800005 | Переместить объект в конец контейнера, не меняя его размер. |
left | 3 | Переместить объект к левому краю контейнера, не меняя его размер. |
right | 5 | Переместить объект в правую часть контейнера, не меняя его размер. |
start | 800003 | Переместить объект в начало контейнера, не меняя его размер. |
Пример:
<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 |
Изображения, которые можно использовать в качестве фона |