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:ignore
Назначение: Любой элемент
Использует: Линт
Этот атрибут принимает разделенный запятыми список идентификаторов проблем с анализом, которые вы хотите, чтобы инструменты игнорировали для этого элемента или любого из его потомков.
Например, вы можете указать инструментам игнорировать ошибку MissingTranslation
:
<string name="show_all_apps" tools:ignore="MissingTranslation">All</string>
tools:targetApi
Назначение : Любой элемент
Использует : Линт
Этот атрибут работает так же, как аннотация @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
из библиотеки поддержки.)
tools:locale
Предназначено для: <resources>
Используется: Lint, редактор Android Studio.
Это сообщает инструментам, какой язык или локаль по умолчанию используется для ресурсов в данном элементе <resources>
, чтобы избежать предупреждений от средства проверки правописания. В противном случае инструмент предполагает, что выбран английский язык.
Значение должно быть допустимым квалификатором локали .
Например, вы можете добавить это в файл values/strings.xml
чтобы указать, что языком, используемым для строк по умолчанию, является испанский, а не английский:
<resources xmlns:tools="http://schemas.android.com/tools"
tools:locale="es">
Атрибуты представления времени разработки
Следующие атрибуты определяют характеристики макета, которые видны только в предварительном просмотре макета Android Studio.
tools:
вместо android:
Предназначено для: <View>
Используется: редактор макетов Android Studio.
Вы можете вставить образцы данных в предварительный просмотр макета, используя префикс tools:
вместо android:
с любым атрибутом <View>
из платформы Android. Это полезно, когда значение атрибута не заполняется до времени выполнения, и вы хотите увидеть эффект в предварительном просмотре макета.
Например, если значение атрибута android:text
установлено во время выполнения или вы хотите видеть макет со значением, отличным от значения по умолчанию, вы можете добавить tools:text
, чтобы указать некоторый текст только для предварительного просмотра макета.
Вы можете добавить как атрибут android:
namespace, который используется во время выполнения, так и соответствующий атрибут 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.
Этот атрибут объявляет, с каким действием по умолчанию связан этот макет. Это позволяет использовать функции в редакторе или предварительном просмотре макета, которые требуют знания действия, например, что такое тема макета в предварительном просмотре и куда вставлять обработчики onClick
, созданные в результате быстрого исправления, как показано на рисунке 2.
Вы можете указать имя класса активности, используя тот же префикс точки, что и в файле манифеста (за исключением полного имени пакета).
Например:
<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
Для данного 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
Этот атрибут объявляет, какой макет вы хотите, чтобы предварительный просмотр макета отображался внутри фрагмента, поскольку предварительный просмотр макета не может выполнить код действия, который обычно применяет макет.
Например:
<fragment android:name="com.example.main.ItemListFragment"
tools:layout="@layout/list_content" />
tools:listitem
, tools:listheader
, tools:listfooter
Предназначен для: <AdapterView>
(и подклассов, таких как <ListView>
).
Используется: Редактор макетов Android Studio
Эти атрибуты определяют, какой макет отображать при предварительном просмотре макета для элементов списка, верхнего и нижнего колонтитула. Все поля данных в макете заполняются числовым содержимым, например «Элемент 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
Этот атрибут позволяет указать макет, который использует этот макет, с помощью <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
Этот атрибут определяет, какое меню отображается в предварительном просмотре макета на панели приложения . Значением является один или несколько идентификаторов меню, разделенных запятыми, без @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
Эти атрибуты задают минимальные и максимальные значения для представления 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
Этот атрибут позволяет открыть 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
Этот атрибут позволяет вставлять в представление данные-заполнители или изображения. Например, чтобы проверить, как ваш макет ведет себя с текстом, прежде чем вы окончательно доработаете текст пользовательского интерфейса для вашего приложения, вы можете использовать текст-заполнитель следующим образом:
<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" />
В следующей таблице описаны типы данных-заполнителей, которые можно вставлять в макеты:
Значение атрибута | Описание данных-заполнителей |
---|---|
@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 | Изображения, которые можно использовать в качестве фона |
Атрибуты сокращения ресурсов
Следующие атрибуты позволяют включить строгую проверку ссылок и объявить, следует ли сохранять или удалять определенные ресурсы при использовании сжатия ресурсов .
Чтобы включить сжатие ресурсов, установите для свойства shrinkResources
значение true
в файле build.gradle
, а также minifyEnabled
для сжатия кода.
Например:
классный
android { ... buildTypes { release { shrinkResources true minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } }
Котлин
android { ... buildTypes { getByName("release") { isShrinkResources = true isMinifyEnabled = true proguardFiles( getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" ) } } }
tools:shrinkMode
Предназначено для: <resources>
Используется: Инструменты создания с возможностью сокращения ресурсов.
Этот атрибут позволяет указать, должны ли инструменты сборки использовать следующее:
- Безопасный режим: сохраните все ресурсы, которые явно цитируются и на которые можно ссылаться динамически с помощью вызова
Resources.getIdentifier()
. - Строгий режим: сохраняйте только те ресурсы, которые явно цитируются в коде или других ресурсах.
По умолчанию используется безопасный режим ( shrinkMode="safe"
). Чтобы вместо этого использовать строгий режим, добавьте shrinkMode="strict"
к тегу <resources>
, как показано здесь:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:shrinkMode="strict" />
Когда вы включаете строгий режим, вам может потребоваться использовать tools:keep
чтобы сохранить ресурсы, которые были удалены, но которые вам действительно нужны, и использовать tools:discard
чтобы явно удалить еще больше ресурсов.
Дополнительную информацию см. в разделе Сокращение ресурсов .
tools:keep
Предназначено для: <resources>
Используется: Инструменты создания с возможностью сокращения ресурсов.
При использовании сжатия ресурсов для удаления неиспользуемых ресурсов этот атрибут позволяет указать ресурсы, которые следует сохранить, обычно потому, что во время выполнения на них ссылаются косвенно, например, путем передачи динамически генерируемого имени ресурса в Resources.getIdentifier()
.
Для использования создайте XML-файл в каталоге ресурсов (например, res/raw/keep.xml
) с тегом <resources>
и укажите каждый ресурс, который нужно сохранить, в tools:keep
в виде списка, разделенного запятыми. В качестве подстановочного знака можно использовать символ звездочки.
Например:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:keep="@layout/used_1,@layout/used_2,@layout/*_3" />
Дополнительную информацию см. в разделе Сокращение ресурсов .
tools:discard
Предназначено для: <resources>
Используется: Инструменты создания с возможностью сокращения ресурсов.
При использовании сжатия ресурсов для удаления неиспользуемых ресурсов этот атрибут позволяет указать ресурсы, которые вы хотите удалить вручную, обычно потому, что на ресурс есть ссылка, но таким образом, который не влияет на ваше приложение, или потому, что плагин Gradle неправильно определил, что на ресурс есть ссылка. .
Для использования создайте XML-файл в каталоге ресурсов (например, res/raw/keep.xml
) с тегом <resources>
и укажите каждый ресурс, который нужно отбросить, в tools:discard
в виде списка, разделенного запятыми. В качестве подстановочного знака можно использовать символ звездочки.
Например:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:discard="@layout/unused_1" />
Дополнительную информацию см. в разделе Сокращение ресурсов .