Компоненты и потоки (ChatComponents, ChatFlows)
Ниже — наиболее часто используемые поля ChatComponents и ChatFlows, сгруппированные по визуальным элементам чата со скриншотами. Полный список публичных классов, свойств и enum'ов — в Dokka-документации.
Конкретные потоки (Search, Gallery, Files и др.) и базовая концепция уровней кастомизации — на отдельных страницах: Потоки (Flows), Введение в дизайн-систему. Часть параметров ChatConfig в 5.x управляется серверной конфигурацией — см. Известные ограничения.
Карта стилей по флоу
Краткий обзор корневых полей, через которые настраивается внешний вид чата. Подробное соответствие UI-элементов и полей — в разделе Соответствие UI и полей темы.
| Корневой путь | Что стилизует | Класс стиля |
|---|---|---|
chatFlow.navigationBar | Тулбар чата: заголовок, подзаголовок, иконки, цвет статус-бара | NavigationBarStyle |
chatFlow.inputView | Поле ввода и обрамляющие кнопки (attach, voice, send) | InputViewStyle |
chatFlow.incomeMessages / outcomeMessages / errorMessages | Стиль входящих, исходящих и ошибочных сообщений | MessagesConfig |
chatFlow.systemMessages | Системные сообщения (вход/выход оператора, запросы) | SystemMessagesConfig |
chatFlow.systemMessages.ratingStyle | Тексты приглашения и благодарности за рейтинг, отрисовка звёзд (5-звёздочная оценка) | RatingStyle |
chatFlow.welcomeScreenStyle | Экран-приветствие при пустой истории | WelcomeScreenStyle |
chatFlow.quoteView | Цитата в поле ввода и внутри сообщений | QuoteViewStyle |
chatFlow.surveyStyle | Вид иконок в опросах: звёзды (optionsSurvey*) и пальцы лайк/дизлайк (binarySurvey*) | SurveyStyle |
chatFlow.buttonSurveyButton / buttonSurveyQuestion | Опрос с кнопками | TextMessageStyle |
chatFlow.messagePopupMenuStyle | Контекстное меню при долгом нажатии на сообщение | MessagePopupMenuStyle |
chatFlow.permissionDescriptionPopupStyle | Окно описания запрашиваемых разрешений | PermissionDescriptionPopupStyle |
chatFlow.smallPushes / chatFlow.bigPushes | Push-уведомления чата | PushesChatStyle |
chatFlow.scrollDownButton / chatFlow.scrollUpButton | Кнопки прокрутки ленты сообщений | ImagesChatStyle |
chatFlow.chip | Чип-плашки (даты, быстрые ответы) | TextMessageStyle |
chatFlow.loader | Прогресс-бар при старте чата | LoaderChatStyle |
chatFlow.retryChatInitButton / errorScreenMessage / errorScreenImage | Экран ошибки инициализации чата | TextButtonChatStyle, TextMessageStyle, ImagesChatStyle |
chatComponents.balloonComponent | Стиль всплывающих balloon-сообщений (Snackbar) | BalloonsChatStyle, BalloonComponent |
chatComponents.pushesComponent | Базовая стилизация push-уведомлений (цвет, иконка, заголовок) | PushesComponent |
searchFlow.searchBar / searchBar.searchResultsStyle | Поиск по сообщениям и список результатов | SearchChatComponent, SearchResultsStyle |
imageFlow.imagePlaceholderResId | Заглушка для недоступного изображения | ImageFlow |
Quickstart
Минимальный пример кастомизации — задать брендовые цвета и собрать тему:
val brandColors = ChatColors(
toolbar = R.color.your_brand_main,
incomingBubble = R.color.your_incoming_bubble,
outgoingBubble = R.color.your_outgoing_bubble,
)
val brandTheme = ChatTheme(
ChatFlows(
ChatComponents(
context = applicationContext,
colors = brandColors,
)
)
)
Готовые сценарии — в разделе Частые сценарии кастомизации. Полное соответствие UI-элементов и полей темы — в разделе ниже.
Соответствие UI и полей темы
Скриншоты ниже сопоставляют визуальные элементы чата с полями ChatComponents и ChatFlows.
Основные элементы чата

| № | Элемент | Путь в темах | Класс стиля / компонента |
|---|---|---|---|
| 1.1 | Заголовок в тулбаре | chatFlow.navigationBar.toolbarHeaderText | NavigationBarStyle |
| 1.2 | Подзаголовок в тулбаре | chatFlow.navigationBar.toolbarSubtitleText | NavigationBarStyle |
| 1.3 | Заголовок с форматированием (Spannable) | chatFlow.navigationBar.toolbarSpannableHeaderText | NavigationBarStyle |
| 1.4 | Иконка поиска в тулбаре | searchFlow.searchBar.searchIcon | SearchChatComponent |
| 1.5 | Фоновый цвет панели навигации | chatFlow.navigationBar.backgroundColor | NavigationBarStyle |
| 1.6 | Цвет статус-бара | chatFlow.navigationBar.statusBarColor | NavigationBarStyle |
| 1.7 | Тень под тулбаром | chatFlow.navigationBar.visibleShadow (Boolean) | NavigationBarStyle |
| 1.8 | Центрирование текста в тулбаре | chatFlow.navigationBar.centerToolbarText (Boolean) | NavigationBarStyle |
| 1.9 | Активность кнопки «Назад» | chatFlow.navigationBar.closeButtonEnabled (Boolean) | NavigationBarStyle |
| 1.10 | Видимость подзаголовка | chatFlow.navigationBar.chatSubtitleEnabled (Boolean) | NavigationBarStyle |
| 1.11 | Стиль кнопки «Назад» | chatFlow.navigationBar.backButton | NavigationBarStyle |
| 1.12 | Стиль кнопки поиска | chatFlow.navigationBar.searchButton | NavigationBarStyle |
| 2.1 | Изображение в сообщении | chatFlow.incomeMessages.image / outcomeMessages.image | ImageMessageStyle, ImageComponent |
| 2.2 | Баббл чата (общий стиль) | chatFlow.incomeMessages.chatBubble / outcomeMessages.chatBubble | BubblesChatStyle, BubbleComponent |
| 2.3 | Иконки статусов сообщений | chatFlow.outcomeMessages.statusIcons | MessageStatusesStyle, MessageStatusesComponent |
| 3 | Время в сообщении с изображением | chatFlow.outcomeMessages.imagesTimeText | MessagesConfig, TextComponent |
| 4 | Стиль системных сообщений | chatFlow.systemMessages.systemMessageText | SystemMessagesConfig, TextComponent |
| 5 | Стиль исходящих сообщений (контейнер) | chatFlow.outcomeMessages | MessagesConfig |
| 6 | Аватар оператора | imageFlow | ImageFlow, ImageComponent |
| 7 | Стиль входящих сообщений (контейнер) | chatFlow.incomeMessages | MessagesConfig |
| 8 | Кнопка прикрепления вложения | chatFlow.inputView.attachButton | InputViewStyle, IconButtonComponent |
| 9 | Поле ввода сообщения | chatFlow.inputView.textInput | InputViewStyle, InputTextComponent |
| 10.1 | Кнопка записи голосового сообщения | chatFlow.inputView.voiceButton | InputViewStyle, IconButtonComponent |
| 10.2 | Кнопка отправки сообщения | chatFlow.inputView.sendButton | InputViewStyle, IconButtonComponent |
Поведение при выделении сообщения

| № | Элемент | Путь в темах | Класс стиля |
|---|---|---|---|
| 1 | Кнопка «Копировать» | chatFlow.navigationBar.copyButton | NavigationBarStyle |
| 2 | Кнопка «Ответить с цитированием» | chatFlow.navigationBar.replyButton | NavigationBarStyle |
| 3 | Инвертированная кнопка «Назад» | chatFlow.navigationBar.invertedBackButton | NavigationBarStyle |
| 4 | Цвет фона под выделенным сообщением | chatFlow.highlightingColor (@ColorRes Int) | ChatFlow |
Поле поиска сообщений

| № | Элемент | Путь в темах | Класс стиля |
|---|---|---|---|
| 1 | Кнопка поиска в тулбаре | chatFlow.navigationBar.searchButton | NavigationBarStyle |
| 2 | Цвет лоадера при поиске | searchFlow.loaderStyle | LoaderChatStyle |
| 3 | Стиль поля ввода поиска | searchFlow.searchBar.textInput | SearchChatComponent |
Список найденных сообщений

| № | Элемент | Путь в темах | Класс стиля |
|---|---|---|---|
| 1 | Кнопка очистки поля ввода | searchFlow.clearInputBtn (см. также SearchChatComponent.clearSearch) | ImagesChatStyle |
| 2.1 | Цвет текста с автором сообщения | searchFlow.searchBar.searchResultsStyle.searchResultsItemNameTextColor | SearchResultsStyle |
| 2.2 | Цвет текста сообщения | searchFlow.searchBar.searchResultsStyle.searchResultsItemMessageTextColor | SearchResultsStyle |
| 2.3 | Цвет текста даты | searchFlow.searchBar.searchResultsStyle.searchResultsItemDateTextColor | SearchResultsStyle |
| 2.4 | Цвет разделителя между результатами | searchFlow.searchBar.searchResultsStyle.searchResultsDividerColor | SearchResultsStyle |
| 2.5 | Иконка «стрелка вправо» | searchFlow.searchBar.searchResultsStyle.searchResultsItemRightArrowDrawable | SearchResultsStyle |
| 2.6 | Цвет иконки «стрелка вправо» | searchFlow.searchBar.searchResultsStyle.searchResultsItemRightArrowTintColor | SearchResultsStyle |
| 2.7 | Изображение при отсутствии результатов | searchFlow.searchBar.searchResultsStyle.searchResultsNoItemsImageDrawable | SearchResultsStyle |
| 2.8 | Цвет текста при отсутствии результатов | searchFlow.searchBar.searchResultsStyle.searchResultsNoItemsTextColor | SearchResultsStyle |
| 2.9 | Цвет фона в результатах поиска | searchFlow.searchBar.searchResultsStyle.backgroundColor | SearchResultsStyle |
Всплывающее сообщение (Snackbar)

| Элемент | Путь в темах | Класс стиля |
|---|---|---|
| Стиль всплывающих сообщений | chatComponents.balloonComponent или прямое присваивание BalloonsChatStyle | BalloonsChatStyle, BalloonComponent |
Стиль работает только если система может показать Snackbar, привязавшись ко вью.
Push-уведомления

| Элемент | Путь в темах | Класс стиля |
|---|---|---|
| Стиль компактного push-уведомления | chatFlow.smallPushes | PushesChatStyle |
| Стиль расширенного push-уведомления | chatFlow.bigPushes | PushesChatStyle |
| Цвет фона push | chatComponents.pushesComponent.pushBackgroundColor (@ColorRes) | PushesComponent |
| Цвет текста push | chatComponents.pushesComponent.textColor (@ColorRes) | PushesComponent |
| Иконка push | chatComponents.pushesComponent.icon (@DrawableRes) | PushesComponent |
| Заголовок push по умолчанию | chatComponents.pushesComponent.pushesDefaultTitle (@StringRes) | PushesComponent |
Поле ввода и кнопка отправки в системном уведомлении предоставляются Android (RemoteInput). SDK не предоставляет публичных полей для отдельной стилизации этого экрана: цвет фона, иконка и текст наследуются из PushesComponent.
Запрос на завершение диалога

| № | Элемент | Путь в темах | Класс стиля |
|---|---|---|---|
| 1 | Текст запроса | chatFlow.systemMessages.requestToResolve | SystemMessagesConfig, TextComponent |
| 2 | Кнопка положительного ответа | chatFlow.systemMessages.approveRequest | SystemMessagesConfig, TextComponent |
| 3 | Кнопка отрицательного ответа | chatFlow.systemMessages.denyRequest | SystemMessagesConfig, TextComponent |
Отзыв о работе оператора (звёзды)

Тексты и счётчик звёзд — через chatFlow.systemMessages.ratingStyle (RatingStyle). Иконки звёзд (пустая / заполненная) — через chatFlow.surveyStyle.optionsSurvey* (SurveyStyle).
| № | Элемент | Путь в темах | Класс стиля |
|---|---|---|---|
| 1 | Текст приглашения оценить | chatFlow.systemMessages.ratingStyle.askForRateText | RatingStyle, TextComponent |
| 2 | Текст благодарности за оценку | chatFlow.systemMessages.ratingStyle.thanksForRateText | RatingStyle, TextComponent |
| 3 | Заголовок над предложением оценить | chatFlow.systemMessages.ratingStyle.ratingHeaderText | RatingStyle, TextComponent |
| 4 | Текст «N» (число поставленных звёзд) | chatFlow.systemMessages.ratingStyle.rateStarsCount | RatingStyle, TextComponent |
| 5 | Текст «из» | chatFlow.systemMessages.ratingStyle.rateFrom | RatingStyle, TextComponent |
| 6 | Текст «5» (максимум звёзд) | chatFlow.systemMessages.ratingStyle.rateTotalStarsCount | RatingStyle, TextComponent |
| 7 | Стиль изображения звезды (фон, размер) | chatFlow.systemMessages.ratingStyle.rateStarImageStyle | RatingStyle, ImagesChatStyle |
| 8 | Вид пустой звезды (иконка) | chatFlow.surveyStyle.optionsSurveyUnselected | SurveyStyle, ImagesChatStyle |
| 9 | Вид заполненной звезды (иконка) | chatFlow.surveyStyle.optionsSurveySelected | SurveyStyle, ImagesChatStyle |
Опрос при завершении диалога (пальцы)
![]()
Бинарный опрос «лайк / дизлайк» стилизуется через chatFlow.surveyStyle (поля binarySurvey*). Тексты приглашения и благодарности — общие со звёздочным рейтингом и задаются через chatFlow.systemMessages.ratingStyle.
| № | Элемент | Путь в темах | Класс стиля |
|---|---|---|---|
| 1 | Лайк (палец вверх), невыбранное состояние | chatFlow.surveyStyle.binarySurveyLikeUnselected | SurveyStyle, ImagesChatStyle |
| 2 | Лайк (палец вверх), выбранное состояние | chatFlow.surveyStyle.binarySurveyLikeSelected | SurveyStyle, ImagesChatStyle |
| 3 | Дизлайк (палец вниз), невыбранное состояние | chatFlow.surveyStyle.binarySurveyDislikeUnselected | SurveyStyle, ImagesChatStyle |
| 4 | Дизлайк (палец вниз), выбранное состояние | chatFlow.surveyStyle.binarySurveyDislikeSelected | SurveyStyle, ImagesChatStyle |
| 5 | Цвет иконок после завершения опроса | chatFlow.surveyStyle.surveyFinalColorFilterResId (@ColorRes) | SurveyStyle |
| 6 | Тип поведения опроса (MESSAGE / SYSTEM) | chatFlow.surveyStyle.type | SurveyMessageType |
| 7 | Тексты приглашения и благодарности | chatFlow.systemMessages.ratingStyle.askForRateText / thanksForRateText | RatingStyle, TextComponent |
Опрос с кнопками

| № | Элемент | Путь в темах | Класс стиля |
|---|---|---|---|
| 1 | Стиль кнопки опроса | chatFlow.buttonSurveyButton | TextMessageStyle, IconButtonChatStyle |
| 2 | Стиль текста вопроса | chatFlow.buttonSurveyQuestion | TextMessageStyle, TextComponent |
Быстрые ответы в чате (chip-плашки)

| Элемент | Путь в темах | Класс стиля |
|---|---|---|
| Стиль текста кнопки быстрого ответа | chatFlow.chip | TextMessageStyle, TextComponent |
| Цвет текста в чипе быстрых ответов | chatColors.quickRepliesText | ChatColors |
| Фоновый тинт чипа | chatColors.quickReplyButtonBackgroundTint | ChatColors |
| Фоновое изображение чипа | chatImages.quickReplyButtonBackground | ChatImages |
Предпросмотр отправляемого файла
| № | Элемент | Путь в темах | Класс стиля |
|---|---|---|---|
| 1 | Заголовок цитаты | chatFlow.quoteView.quoteHeaderChatViewText | QuoteViewStyle, TextComponent |
| 2 | Текст цитаты | chatFlow.quoteView.quoteMessageChatViewText | QuoteViewStyle, TextComponent |
| 3 | Кнопка «очистить» в цитате | chatFlow.quoteView.quoteClearIconButton | QuoteViewStyle, IconButtonChatStyle |
Предпросмотр голосового файла
| № | Элемент | Путь в темах | Класс стиля |
|---|---|---|---|
| 1 | Кнопка воспроизведения/паузы | chatFlow.quotePlayPauseButton (и quotePlayPausePlayingStateButton для активного состояния) | ImagesChatStyle, IconButtonChatStyle |
| 2 | Продолжительность голосового сообщения | chatFlow.quoteView.quoteDurationChatViewText | QuoteViewStyle, TextComponent |
Сообщения с файлом

Стиль файлового сообщения настраивается через тип FileMessageStyle, доступный по пути chatFlow.incomeMessages.file / chatFlow.outcomeMessages.file.
| № | Элемент | Путь в темах | Класс стиля |
|---|---|---|---|
| 1 | Фоновый цвет элемента с файлом | chatFlow.outcomeMessages.file.backgroundColor | FileMessageStyle, ImageComponent |
| 2 | Внутренние отступы | chatFlow.outcomeMessages.file.padding | FileMessageStyle |
| 3 | Стиль лоадера | chatFlow.outcomeMessages.file.loader | LoaderChatStyle |
| 4 | Имя файла | chatFlow.outcomeMessages.file.fileName | TextComponent |
| 5 | Характеристики файла (размер, тип) | chatFlow.outcomeMessages.file.fileSpecs | TextComponent |
Сообщение с ошибкой при отправке

| № | Элемент | Путь в темах | Класс стиля |
|---|---|---|---|
| 1 | Текст ошибки загрузки файла | chatFlow.outcomeMessages.file.error (аналогично для incomeMessages) | FileMessageStyle |
| 2 | Стиль bubble сообщений с ошибками | chatFlow.errorMessages.chatBubble | BubblesChatStyle, BubbleComponent |
Заглушка для изображения

| Элемент | Путь в темах | Класс стиля |
|---|---|---|
| Ресурс заглушки для недоступного изображения | imageFlow.imagePlaceholderResId (@DrawableRes) | ImageFlow, ImageComponent |
Прогресс-бар при старте чата

| Элемент | Путь в темах | Класс стиля |
|---|---|---|
| Прогресс-бар при старте чата | chatFlow.loader | LoaderChatStyle, LoadingIndicatorComponent |
Экран с ошибкой

| № | Элемент | Путь в темах | Класс стиля |
|---|---|---|---|
| 1 | Кнопка повторной инициализации чата | chatFlow.retryChatInitButton | TextButtonChatStyle, TextButtonComponent |
| 2 | Сообщение на экране ошибки | chatFlow.errorScreenMessage | TextMessageStyle, TextComponent |
| 3 | Изображение на экране ошибки | chatFlow.errorScreenImage | ImagesChatStyle, ImageComponent |
Экран-приветствие

| № | Элемент | Путь в темах | Класс стиля |
|---|---|---|---|
| 1 | Заголовок приветствия | chatFlow.welcomeScreenStyle.welcomeScreenTitle | WelcomeScreenStyle, TextComponent |
| 2 | Подзаголовок приветствия | chatFlow.welcomeScreenStyle.welcomeScreenSubtitle | WelcomeScreenStyle, TextComponent |
| 3 | Изображение приветствия | chatFlow.welcomeScreenStyle.welcomeScreenImage | ImagesChatStyle |
| 4 | Фоновый цвет экрана приветствия | chatFlow.welcomeScreenStyle.backgroundColor | WelcomeScreenStyle, ChatMainComponent |
Кнопка скролла вниз по сообщениям

| № | Элемент | Путь в темах | Класс стиля |
|---|---|---|---|
| 1 | Стиль кнопки скролла вниз | chatFlow.scrollDownButton | ImagesChatStyle, ImageComponent |
| 2 | Цвет стикера непрочитанных сообщений | chatFlow.unreadMsgStickerColor (@ColorRes) | ChatFlow, ChatMainComponent |
| 3 | Текст на стикере непрочитанных | chatFlow.unreadMessagesCount | TextMessageStyle, TextComponent |
Кнопка скролла вверх по сообщениям

| № | Элемент | Путь в темах | Класс стиля |
|---|---|---|---|
| 1 | Стиль кнопки скролла вверх | chatFlow.scrollUpButton | ImagesChatStyle, ImageComponent |
| 2 | Цвет стикера непрочитанных (верхний) | chatFlow.unreadMsgStickerUpColor (@ColorRes) | ChatFlow, ChatMainComponent |
| 3 | Текст на верхнем стикере непрочитанных | chatFlow.unreadMessagesCountUp | TextMessageStyle, TextComponent |
Приоритеты темизации: ChatColors, ChatImages, Components и Flows
Система тем делится на несколько уровней:
-
ChatColors / ChatImages / ChatTexts / ChatTypography Базовые таблицы значений. На этом уровне задаются глобальные цвета, картинки, тексты и шрифты для всего SDK.
-
ChatComponents Объединяет базовые таблицы и собирает из них готовые компоненты (кнопки, тулбар, бабблы сообщений, лоадеры и т. п.). Изменения на этом уровне применяются сразу к целым группам элементов.
-
ChatFlows Финальный слой, где из компонентов собираются стили экранов и сценариев (
chatFlow,searchFlowи т. д.). ЧерезChatFlowsпереопределите поведение конкретного элемента (например, только время сообщений с ошибкой).
Приоритет применения:
- Значение, заданное в
ChatColors/ChatImages, становится значением по умолчанию для всех компонентов. - Значение, заданное в
ChatComponents, используется во всех флоу, пока флоу не переопределит его самостоятельно. - Значение, заданное напрямую в
ChatFlows, имеет наивысший приоритет.
Рекомендуемый порядок кастомизации (минимизирует количество переопределений в ChatFlows):
- Задать брендовые цвета и иконки через
ChatColorsиChatImages. - При необходимости — настроить компоненты (например,
navigationBarStyleилиaudioPlayer). - Только для частных случаев (ошибки, особые сообщения и т. д.) — модифицировать
ChatFlows.
Частые сценарии кастомизации
Несколько типичных примеров настройки внешнего вида.
Пример 1. Свои брендовые цвета бабблов и тулбара
val lightColors = ChatColors(
main = R.color.your_brand_main,
incomingBubble = R.color.your_incoming_bubble,
outgoingBubble = R.color.your_outgoing_bubble,
toolbar = R.color.your_toolbar_bg,
toolbarText = R.color.your_toolbar_text,
incomingText = R.color.your_incoming_text,
outgoingText = R.color.your_outgoing_text,
)
Бабблы, тулбар и кнопки, использующие эти цвета по умолчанию, окрашиваются в заданные значения.
Пример 2. Замена логотипа и иконки push-уведомлений
val lightImages = ChatImages(
logoImage = R.drawable.ic_your_brand_logo,
pushIcon = R.drawable.ic_your_push_icon,
)
Переопределяет логотип на приветственном экране и иконку push в статус-баре.
Пример 3. Настройка темы через ChatComponents
val lightComponents = ChatComponents(
context = applicationContext,
colors = lightColors,
images = lightImages,
text = ChatTexts(), // ChatTexts(...) — для локализованных строк по умолчанию
typography = ChatTypography() // ChatTypography(...) — для шрифтов и размеров
).apply {
navigationBarStyle = navigationBarStyle.copy(
closeButtonEnabled = false
)
}
Задаёт общие настройки компонентов: например, отключает кнопку закрытия чата в тулбаре. Параметры text и typography опциональны; если они не указаны, используются ChatTexts() и ChatTypography() по умолчанию.
Пример 4. Точечная настройка через ChatFlows
val lightFlows = ChatFlows(lightComponents).apply {
// Цвет подписи времени у сообщений с ошибкой
chatFlow.outcomeMessages.timeTextWhenError =
chatFlow.outcomeMessages.timeText.copy(
textColor = R.color.your_error_time_color
)
// Иконка "play" в цитатах
chatFlow.quotePlayPauseButton = ImagesChatStyle(
imageResId = R.drawable.ic_your_play_icon,
tintColor = R.color.your_brand_main
)
}
val chatLightTheme = ChatTheme(lightFlows)
Сначала настраиваются компоненты, затем при необходимости уточняются отдельные элементы через флоу.
Пример 5. Единый цвет времени для ошибочных сообщений
Распространённый кейс: подменить цвет времени, времени с картинкой и времени Open Graph-превью у входящих и исходящих сообщений в состоянии «ошибка отправки».
val lightFlows = ChatFlows(lightComponents).apply {
listOf(chatFlow.outcomeMessages, chatFlow.incomeMessages).forEach { messages ->
messages.timeTextWhenError = messages.timeText.copy(
textColor = R.color.your_error_time_color
)
messages.imagesTimeTextWhenError = messages.imagesTimeText.copy(
textColor = R.color.your_error_time_color
)
messages.openGraphTimeTextWhenError = messages.openGraphTimeText.copy(
textColor = R.color.your_error_time_color
)
}
}
Каждое поле *WhenError опционально: если оно не задано, используется значение из основного * поля.
Справочник enum-значений
Многие компоненты темы (BubbleComponent, IconButtonComponent, LoadingIndicatorComponent и т. д.) индексируются enum-значениями. Чтобы получить стиль кнопки «Назад», используйте iconButtonComponent[IconButtonEnum.BACK]. Ниже — справочники значений.
BubbleStyleEnum
Пакет: edna.chatcenter.ui.visual.uiStyle.settings.components.bubble. Доступ через bubbleComponent[BubbleStyleEnum.X] и обратно через BubbleViewSelector.
| Значение | Описание |
|---|---|
INCOMING_BUBBLE | Пузырь входящего сообщения (от оператора). |
OUTGOING_BUBBLE | Пузырь исходящего сообщения (от пользователя). |
ERROR_BUBBLE | Пузырь сообщения, отправка которого завершилась ошибкой. |
IconButtonEnum
Пакет: edna.chatcenter.ui.visual.uiStyle.settings.components.iconButton. Реализует ChatComponentEnum.
Всего 14 значений:
| Значение | Кнопка |
|---|---|
BACK | Кнопка «Назад» в toolbar. |
INVERTED_BACK | «Назад» в инверсной (тёмной) теме toolbar. |
MENU | Кнопка меню (троеточие). |
ATTACH | Прикрепление вложений. |
MICROPHONE | Запись голосового сообщения. |
SEND | Кнопка отправки сообщения в поле ввода. |
COPY | Копирование сообщения из контекстного меню. |
REPLY | Ответ на сообщение. |
QUOTE_REPLY | Иконка ответа в области цитаты. |
QUOTE_CLEAR | Удалить выбранную цитату. |
SEARCH | Иконка поиска в toolbar. |
CLEAR_SEARCH | Очистить поле поиска. |
PLAY_PAUSE_INCOMING | Play/pause для входящих голосовых. |
PLAY_PAUSE_OUTGOING | Play/pause для исходящих голосовых. |
LoadingIndicatorEnum
Пакет: edna.chatcenter.ui.visual.uiStyle.settings.components.loadingIndicator. Реализует ChatComponentEnum.
| Значение | Где отображается |
|---|---|
INCOMING_MESSAGE | Лоадер в пузыре входящего сообщения (например, при подгрузке вложения). |
OUTGOING_MESSAGE | Лоадер в исходящем пузыре. |
PAGE | Полноэкранный лоадер при подгрузке истории / открытии чата. |
SEARCH | Лоадер на экране поиска. |
ImageStyleEnum (выборка)
Пакет: edna.chatcenter.ui.visual.uiStyle.settings.components.image. Полный список — см. Dokka. Ключевые значения:
| Значение | Применение |
|---|---|
INCOMING_IMAGE / OUTGOING_IMAGE | Стили картинок в пузырях. |
CONSULT_MESSAGE_AVATAR | Аватар оператора. |
LOGO_IMAGE | Логотип в навигационной панели. |
ERROR_ICON / ERROR_SCREEN_IMAGE | Иконки ошибок (рядом с сообщением и на full-screen экране ошибки). |
INFO_ICON | Информационные иконки в системных сообщениях. |
BINARY_SURVEY_LIKE_SELECTED_ICON / BINARY_SURVEY_LIKE_UNSELECTED_ICON | Like-иконки бинарного опроса. |
BINARY_SURVEY_DISLIKE_SELECTED_ICON / BINARY_SURVEY_DISLIKE_UNSELECTED_ICON | Dislike-иконки. |
FILES_AND_MEDIA_IMAGE | Иконки в списке файлов / медиа. |
TextStyleEnum (выборка)
Пакет: edna.chatcenter.ui.visual.uiStyle.settings.components.textChat. У этого enum много значений (~30+) — ниже самые востребованные при кастомизации:
| Значение | Где применяется |
|---|---|
BALLOON | Текст всплывающих balloon-подсказок. |
CHIP | Чип-плашки (например, дата). |
ALERTS_TITLE / ALERTS_REGULAR | Заголовки и текст системных алертов. |
BUTTONS_SURVEY_BUTTON_TEXT / BUTTONS_SURVEY_QUESTION_TEXT | Текст в опросах с кнопками. |
APPROVE_REQUEST / DENY_REQUEST | Кнопки «Согласиться» / «Отклонить» в системных запросах. |
ASK_FOR_RATE | Текст приглашения оценить чат. |
AUDIO_STATUS | Текст состояния аудио-плеера. |
CHAT_ERROR_SCREEN_MESSAGE | Сообщение на экране ошибки. |
DATE_MESSAGE | Системное сообщение с датой. |
Для получения полного списка значений вызовите TextStyleEnum.entries в коде или см. Dokka.
Alignment (структуры)
Пакет: edna.chatcenter.ui.visual.uiStyle.settings.structures. Serializable.
| Значение | Описание |
|---|---|
LEFT | По левому краю. |
CENTER | По центру. |
RIGHT | По правому краю. |
VerticalAlignment
Пакет: edna.chatcenter.ui.visual.uiStyle.settings.structures. Serializable. Companion: VerticalAlignment.Companion.getDefault().
| Значение | Описание |
|---|---|
TOP | По верхнему краю. |
CENTER | По центру по вертикали. |
BOTTOM | По нижнему краю. |
ContentGravity
Пакет: edna.chatcenter.ui.visual.styles.permissions. Используется в стилях диалога описания разрешений.
| Значение | Описание |
|---|---|
LEFT / CENTER / RIGHT | Горизонтальное выравнивание контента (заголовок/описание) внутри диалога. |
PermissionDescriptionType
Пакет: edna.chatcenter.ui.visual.styles.permissions. Передаётся в коллбек onAllowClick(type, permissionId) фрагмента, чтобы вы знали, на какую группу разрешений отреагировал пользователь.
| Значение | Группа разрешений |
|---|---|
CAMERA | Доступ к камере. |
RECORD_AUDIO | Запись аудио (голосовые сообщения). |
STORAGE | Чтение / запись внешнего хранилища (вложения). |
CurrentUiTheme
Пакет: edna.chatcenter.ui.visual.uiStyle. Companion-метод CurrentUiTheme.fromInt(intValue: Int?) восстанавливает значение по числовому коду (используется при сериализации).
| Значение | Описание |
|---|---|
SYSTEM | Использовать системную настройку темы (UiModeManager). По умолчанию для новых интеграций. |
LIGHT | Светлая тема активна принудительно. |
DARK | Тёмная тема активна принудительно. |
Если нет уверенности в имени константы — откройте <EnumName>.entries в Android Studio. Все enum'ы поддерживают этот синтаксис (Kotlin 1.9+), и автокомплит выдаст полный список с актуальными именами.
Полный API
На этой странице перечислены наиболее часто используемые поля ChatComponents и ChatFlows. Полный список публичных классов, свойств и enum'ов — в Dokka-документации, сгенерированной из исходников SDK.
Связанные разделы
- Дизайн-система: обзор — уровни кастомизации и архитектура темы.
- Темы — три конструктора
ChatThemeи готовые примеры светлой/тёмной темы. - Цвета — таблица
ChatColors(116 полей). - Изображения — таблица
ChatImages(66 полей). - Типографика —
ChatTypography: 6 размеров + 20 точек подмены TTF-шрифтов. - Потоки (Flows) — экран-специфичная кастомизация: chat / search / gallery / files / image / popups / balloons / bottomMenu.