Компоненты и атрибуты настроек   Часть Android Jetpack.

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

Компоненты настроек

В этом разделе описаны распространенные компоненты Preference. Дополнительную информацию можно найти на справочных страницах каждого компонента.

Инфраструктура предпочтений

PreferenceFragmentCompat – Fragment, который обрабатывает отображение интерактивной иерархии объектов Preference.

Контейнеры предпочтений

PreferenceScreen – контейнер верхнего уровня, который представляет экран настроек. Это корневой компонент иерархии Preference.

PreferenceCategory – контейнер, который используется для группировки похожих элементов Preferences. PreferenceCategory показывает название категории и визуально разделяет группы Preferences.

Индивидуальные предпочтения

Preference – базовый структурный блок, который представляет отдельную настройку. Если для Preference задано сохранение, у него есть соответствующая пара "ключ-значение", которая содержит выбор пользователя для настройки, доступ к которой можно получить в другом месте приложения.

EditTextPreference – Preference, который сохраняет значение String. Пользователи могут нажать на Preference, чтобы открыть диалоговое окно с текстовым полем, в котором можно изменить сохраненное значение.

ListPreference – Preference, который сохраняет строковое значение. Пользователи могут изменить это значение в диалоговом окне, содержащем список переключателей с соответствующими ярлыками.

MultiSelectListPreference – Preference, который сохраняет набор строк. Пользователи могут изменять эти значения в диалоговом окне, содержащем список флажков с соответствующими ярлыками.

SeekBarPreference – Preference, который сохраняет целочисленное значение. Это значение можно изменить, перетащив соответствующий ползунок, который отображается в макете Preference.

SwitchPreferenceCompat – Preference, который сохраняет логическое значение. Это значение можно изменить, взаимодействуя с соответствующим виджетом переключателя или нажав на макет Preference.

CheckBoxPreference – Preference, который сохраняет логическое значение. Это значение можно изменить, установив или сняв флажок или нажав на макет Preference.

Атрибуты настроек

Ниже перечислены некоторые из наиболее часто используемых атрибутов, которые настраивают внешний вид и поведение Preference.

Общие атрибуты

title

Значение String, представляющее название Preference.

Пример: app:title="Title"

summary

Значение String, представляющее сводку Preference.

Пример: app:summary="Summary"

icon

Drawable, представляющий значок Preference.

Пример: app:icon="@drawable/ic_camera"

key

Значение String, представляющее ключ, который используется для сохранения значения связанного объекта Preference. Ключ позволяет дополнительно настраивать Preference во время выполнения. Вам нужно задать ключ для каждого элемента Preference в иерархии.

Пример: app:key="key"

enabled

Логическое значение, которое указывает, могут ли пользователи взаимодействовать с Preference. Если задано значение false, элемент Preference будет неактивным и пользователи не смогут с ним взаимодействовать. Значение по умолчанию: true.

Пример: app:enabled="false"

selectable

Логическое значение, которое указывает, могут ли пользователи взаимодействовать с Preference. Значение по умолчанию: true.

Пример: app:selectable="false"

isPreferenceVisible

Логическое значение, которое показывает, видна ли категория Preference или Preference. Это эквивалентно вызову setVisible().

Пример: app:isPreferenceVisible="false"

defaultValue

Значение по умолчанию для Preference. Это значение задается и сохраняется, если для Preference не найдено другое сохраненное значение. Тип значения зависит от связанного объекта Preference.

Пример: app:defaultValue="true"

dependency

Представляет ключ SwitchPreferenceCompat, который управляет состоянием этого Preference. Если переключатель выключен, Preference отключен и его нельзя изменить.

Пример: app:dependency="parent"

Атрибуты PreferenceCategory

initialExpandedChildrenCount

Целое число, которое активирует поведение раскрывающегося элемента Preference. Это значение представляет собой максимальное количество дочерних элементов, которые будут показаны в PreferenceGroup. Остальные дочерние элементы скрыты, и их можно посмотреть, нажав кнопку развертывания. По умолчанию задано значение Integer.MAX_VALUE, и показываются все дочерние элементы.

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

Пример: app:initialExpandedChildrenCount="0"

Атрибуты ListPreference и MultiSelectListPreference

entries

Массив строк, соответствующий записям списка, которые будут показаны пользователю. Каждое из этих значений соответствует по индексу массиву значений, которые сохраняются внутри. Например, если пользователь выбирает первый элемент списка, сохраняется первый элемент в соответствующем массиве значений.

Пример: app:entries="@array/entries"

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

entryValues

Массив записей, которые нужно сохранить. Каждое из этих значений соответствует по индексу массиву элементов списка, которые показываются пользователю.

Пример: app:entryValues="@array/values"