Изображения (ChatImages)
ChatImages управляет всеми иконками и drawable-ресурсами SDK. Значения задаются ссылками R.drawable.*. Для searchLoader по умолчанию используется тот же ресурс, что и в поле loader.
Все поля имеют тип Int (@DrawableRes). Большинство дефолтов — ресурсы с префиксом ecc_*; отдельные исключения (маски и баблы сообщений, фон расписания, стрелка результатов поиска) видны в таблицах ниже.
Ниже — исчерпывающий список настраиваемых иконок SDK, сгруппированный по экранам/контексту. Если иконки нет в этих таблицах — она не входит в публичный API и менять её нельзя.
Тулбар и навигация
| Поле | Описание | Значение по умолчанию |
|---|---|---|
backBtn | Кнопка «назад» в тулбаре | R.drawable.ecc_ic_arrow_back_white_24dp |
menuIcon | Кнопка меню в тулбаре | R.drawable.ecc_ic_more_vert_24dp |
searchIcon | Иконка поиска | R.drawable.ecc_ic_search_white_24dp |
copyIcon | Кнопка «Копировать» в тулбаре | R.drawable.ecc_ic_content_copy_24dp |
replyIcon | Кнопка «Ответить/процитировать» в тулбаре | R.drawable.ecc_ic_reply_24dp |
Поле ввода и отправка
| Поле | Описание | Значение по умолчанию |
|---|---|---|
chatInputBackground | Фон поля ввода сообщения | R.drawable.ecc_chat_input_background |
attachIcon | Иконка скрепки (добавление вложения) | R.drawable.ecc_ic_attachment_button |
sendBtn | Кнопка отправки сообщения | R.drawable.ecc_ic_send_button |
voiceBtnBackground | Фон кнопки записи голосового сообщения | R.drawable.ecc_record_button_background |
voiceBtnIcon | Иконка микрофона в кнопке записи голосового | R.drawable.ecc_record_button_icon |
quoteClearBtn | Отмена цитирования в поле ввода | R.drawable.ecc_ic_clear_36dp |
Сообщения и баблы
| Поле | Описание | Значение по умолчанию |
|---|---|---|
incomingBubbleImage | Маска формы входящего баббла | R.drawable.alt_ecc_incoming_bubble |
outgoingBubbleImage | Маска формы исходящего баббла | R.drawable.alt_ecc_outgoing_bubble |
incomingImageMask | Маска формы входящего изображения в сообщении | R.drawable.alt_ecc_incoming_image_mask |
outgoingImageMask | Маска формы исходящего изображения | R.drawable.alt_ecc_outgoing_image_mask |
imagePlaceholder | Плейсхолдер изображения в сообщении | R.drawable.ecc_image_placeholder |
timestampOutgoingBackground | Подложка времени в исходящем сообщении | R.drawable.ecc_timestamp_outgoing_underlayer |
timestampIncomingBackground | Подложка времени во входящем сообщении | R.drawable.ecc_timestamp_incoming_background |
Статусы сообщений
| Поле | Описание | Значение по умолчанию |
|---|---|---|
messageSending | Статус «отправляется» | R.drawable.ecc_message_image_sending |
messageSent | Статус «отправлено» | R.drawable.ecc_message_image_sending |
messageDelivered | Статус «доставлено» | R.drawable.ecc_message_image_delivered |
messageRead | Статус «прочитано» | R.drawable.ecc_image_message_read |
messageFailed | Статус «ошибка» | R.drawable.ecc_message_image_failed |
messageEditedStatusIcon | Метка «отредактировано» | R.drawable.ecc_message_image_edited |
messageSending и messageSent по умолчанию используют один и тот же ресурс. Чтобы визуально отличать «отправляется» от «отправлено», переопределите messageSent своим drawable.
Цитаты и реплаи
| Поле | Описание | Значение по умолчанию |
|---|---|---|
quoteBackgroundImage | Фон блока цитаты | R.drawable.ecc_quote_background |
quoteIconBackground | Подложка иконки файла/микрофона в цитате | R.drawable.ecc_circle_gray_48dp |
quoteFileIcon | Иконка файла в цитате | R.drawable.ecc_ic_file_outline_24dp |
quoteMicIcon | Иконка микрофона в цитате аудио-сообщения | R.drawable.ecc_ic_mic_24dp |
quoteImageMask | Маска изображения в цитате | R.drawable.ecc_quote_image_mask |
Голосовые сообщения
| Поле | Описание | Значение по умолчанию |
|---|---|---|
playIcon | Запуск воспроизведения | R.drawable.ecc_voice_message_play |
pauseIcon | Пауза воспроизведения | R.drawable.ecc_voice_message_pause |
Файлы и загрузки
| Поле | Описание | Значение по умолчанию |
|---|---|---|
downloadIcon | Скачать файл (тулбар) | R.drawable.ecc_ic_file_download_white_24dp |
progressButtonStartDownload | Начало загрузки | R.drawable.ecc_ic_vertical_align_bottom_18dp |
progressButtonInProgress | Отмена идущей загрузки | R.drawable.ecc_ic_clear_36dp |
progressButtonCompleted | Загрузка завершена | R.drawable.ecc_ic_file_outline_24dp |
selectRing | Кружок выбора файла (невыбранный) | R.drawable.ecc_aqua_ring |
Меню вложений (BottomMenuChatFlow)
| Поле | Описание | Значение по умолчанию |
|---|---|---|
attachmentCameraIcon | Камера в меню вложений | R.drawable.ecc_ic_camera_42dp |
attachmentGalleryIcon | Галерея в меню вложений | R.drawable.ecc_ic_photo_42dp |
attachmentFileIcon | Выбор файла в меню вложений | R.drawable.ecc_ic_file_fill_42dp |
attachmentSendIcon | Отправить с вложением | R.drawable.ecc_ic_send_42dp |
attachmentQuoteIcon | Цитировать с вложением | R.drawable.ecc_ic_reply_gray_24dp |
Поиск
| Поле | Описание | Значение по умолчанию |
|---|---|---|
clearSearch | Очистка поля поиска | R.drawable.ecc_ic_clear_gray_30dp |
searchLoader | Лоадер при загрузке результатов | R.drawable.ecc_im_loading (значение поля loader) |
searchResultsItemRightArrow | Стрелка в результатах поиска | R.drawable.right_arrow |
searchResultNoItemsImage | Изображение «ничего не найдено» | R.drawable.ecc_search_not_found |
Опросы (Survey)
| Поле | Описание | Значение по умолчанию |
|---|---|---|
quickReplyButtonBackground | Фон кнопки быстрого ответа | R.drawable.ecc_quick_reply_button_background |
surveyButtonBackground | Фон кнопки опроса | R.drawable.ecc_survey_button_backround |
rateStarSelected | Заполненная звезда (rating-survey) | R.drawable.ecc_options_survey_selected |
rateStarUnselected | Пустая звезда | R.drawable.ecc_options_survey_unselected |
binarySurveyLikeUnselectedIcon | Палец вверх (пустой) | R.drawable.ecc_binary_survey_like_unselected |
binarySurveyLikeSelectedIcon | Палец вверх (заполненный) | R.drawable.ecc_binary_survey_like_selected |
binarySurveyDislikeUnselectedIcon | Палец вниз (пустой) | R.drawable.ecc_binary_survey_dislike_unselected |
binarySurveyDislikeSelectedIcon | Палец вниз (заполненный) | R.drawable.ecc_binary_survey_dislike_selected |
Прокрутка
| Поле | Описание | Значение по умолчанию |
|---|---|---|
scrollDownButtonIcon | Иконка кнопки «↓ к последнему сообщению» | R.drawable.ecc_scroll_down_icon |
scrollDownBackground | Фон кнопки прокрутки вниз | R.drawable.ecc_scroll_down_background |
scrollUpButtonIcon | Иконка кнопки «↑ вверх» | R.drawable.ecc_scroll_up_icon |
scrollUpBackground | Фон кнопки прокрутки вверх | R.drawable.ecc_scroll_down_background |
scrollDownBackground и scrollUpBackground по умолчанию указывают на один и тот же ресурс. Если фоны кнопок «↓» и «↑» в вашей теме должны различаться — переопределите оба поля.
Аватары и плейсхолдеры
| Поле | Описание | Значение по умолчанию |
|---|---|---|
operatorAvatarPlaceholder | Плейсхолдер аватара оператора | R.drawable.ecc_operator_avatar_placeholder |
logoImage | Логотип на приветственном экране | R.drawable.ecc_welcome_logo |
loader | Главный лоадер по центру экрана | R.drawable.ecc_im_loading |
Push-уведомления и алерты
| Поле | Описание | Значение по умолчанию |
|---|---|---|
pushIcon | Иконка push-уведомления | R.drawable.ecc_default_push_icon |
balloonBackground | Фон Toast/Snackbar | R.drawable.ecc_background_snackbar |
Ошибки и расписание
| Поле | Описание | Значение по умолчанию |
|---|---|---|
errorScreenImage | Картинка экрана-ошибки чата | R.drawable.ecc_serious_worker |
scheduleMessageIcon | Иконка сообщения о расписании оператора | R.drawable.ecc_schedule_icon |
scheduleMessageIconContainer | Подложка под иконкой сообщения о расписании | R.drawable.circle_aqua_outline |
infoIcon | Информационная иконка | R.drawable.ecc_info_icon |
Базовая кастомизация
val images = ChatImages().apply {
backBtn = R.drawable.your_back_24dp
sendBtn = R.drawable.your_send_24dp
operatorAvatarPlaceholder = R.drawable.your_avatar_placeholder
}
val theme = ChatTheme(
applicationContext,
images = images
)
Конструктор ChatImages() без параметров создаёт объект со всеми дефолтами. Через apply { ... } подменяйте только те поля, которые нужны вашему бренду — остальные останутся стандартными.
Полный бренд-комплект
Если нужно собрать брендированную тему целиком — ChatImages передаётся в ChatTheme рядом с ChatColors и ChatTypography.
val brandImages = ChatImages().apply {
logoImage = R.drawable.brand_welcome_logo
backBtn = R.drawable.brand_ic_back
sendBtn = R.drawable.brand_ic_send
attachmentCameraIcon = R.drawable.brand_ic_camera
pushIcon = R.drawable.brand_ic_push
}
val theme = ChatTheme(
applicationContext,
colors = brandColors,
images = brandImages,
typography = brandTypography
)
Подробный сценарий сборки светлой и тёмной тем — в разделе Темы.
Связанные разделы
- Дизайн-система: обзор — как устроены
ChatTheme,ChatImages,ChatColors,ChatTypography. - Компоненты экранов — где на экране отображаются перечисленные иконки.
- Цвета — таблица
ChatColors. - Типографика —
ChatTypography. - Темы — как
ChatImagesвстраивается вChatTheme. - Потоки (Flows) — экран-специфичная кастомизация.
- Доступность — иконки статусов сообщений и contentDescription.
- Известные ограничения — параметры с приоритетом серверной настройки.