Every visible component in the Sceyt Chat Android UIKit — message bubbles, the channel list, the message input bar, channel info screens, and more — exposes a dedicated style data class. Instead of subclassing views or fiddling with XML attributes, you customize a component by supplying aDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/sceyt/sceyt-chat-android-uikit/llms.txt
Use this file to discover all available pages before exploring further.
StyleCustomizer lambda that receives the default-built style object and returns a modified copy. This design lets you override as little or as much as you want while keeping the default behavior intact for everything you don’t touch.
The StyleCustomizer<S> Interface
StyleCustomizer is a Kotlin functional interface with a single method:
context— theContextin which the component is being built (use it to resolve resources, dimensions, or drawables).style— the fully-initialized default style object. Modify it withcopy()and return the result.
StyleCustomizer<S> is expected.
How to Apply a Customizer
Each style class exposes a staticstyleCustomizer companion-object property. Assign your lambda to it once — before any UI is inflated, typically in Application.onCreate().
Message Bubble Colors
The README demonstrates customizing incoming and outgoing bubble background colors, which is one of the most common style changes:Channel List Style
ChannelListViewStyle governs the entire channel list screen, including its background, empty/loading states, popup menu style, and the per-item appearance nested inside itemStyle:
ChannelListView instance (for example, when you embed the channel list in more than one screen), use the per-view helper:
If both a global
styleCustomizer and a view-specific customizer are set, the view-specific customizer takes precedence for that view and the global one is ignored for it.StyleRegistry — Advanced Style Management
Under the hood, built style objects are stored in a thread-safe StyleRegistry singleton that survives configuration changes and avoids memory leaks. You can interact with it directly when you need type-safe retrieval of an already-built style — for instance when building a composite screen from multiple independently-styled sub-views.
| Method | Description |
|---|---|
get(id) | Returns the style for id, or null if not registered |
set(id, style) | Registers style under id (operator form) |
getTyped<T>(id) | Type-safe get; returns null if the type does not match |
getOrDefault<T>(id) { … } | Returns the registered style or invokes the lambda to build one |
requireTyped<T>(id) | Same as getTyped but throws IllegalArgumentException if missing |
register(style, id) | Named-function alternative to set |
unregister(id) | Removes the entry and returns the removed style |
clear() | Removes all registered styles |
Style Class Reference
Each style class targets a specific component. All of them follow the same pattern: they are data classes with a companionstyleCustomizer, and they are built via an internal Builder that reads XML attributes and then passes the result through your customizer.
MessageItemStyle
MessageItemStyle
Controls every visual aspect of an individual message bubble in the message list.Key properties:
incomingBubbleBackgroundStyle/outgoingBubbleBackgroundStyle— bubble fill, corners, and strokeincomingReplyBackgroundStyle/outgoingReplyBackgroundStyle— quoted-reply container backgroundbodyTextStyle— font, size, and color for message body textsenderNameTextStyle— sender label above incoming group messagesmessageDeliveryStatusIcons— sent/delivered/read tick drawablesavatarStyle— inline sender avatar (groups)mediaLoaderStyle— upload/download progress indicator stylereactionCountTextStyle/reactionsContainerBackgroundStyle— emoji reaction row
ChannelListViewStyle
ChannelListViewStyle
Controls the channel list container — background, empty/loading state layouts, and popup menu theming.Key properties:
backgroundColor— list background coloremptyState/emptySearchState—@LayoutResfor custom empty state viewsloadingState—@LayoutResfor the loading placeholderpopupStyle—@StyleResapplied to the long-press popup menushowChannelActionAsPopup— whether swipe actions show as a popup or inlineitemStyle— nestedChannelItemStylefor per-row appearance
ChannelItemStyle
ChannelItemStyle
Controls a single row in the channel list.Key properties:
titleTextStyle— channel name text appearancelastMessageTextStyle— subtitle message text appearancedateTextStyle— timestamp text appearanceunreadCountTextStyle/unreadCountMutedTextStyle— badge text stylesavatarStyle— channel avatar appearancedeliveryStatusIcons— message status icons shown in the rowpresenceStateColorProvider— online/offline dot color
ChannelInfoStyle
ChannelInfoStyle
Controls the channel info / details screen (
ChannelInfoActivity).Key properties:backgroundColor/borderColor/dividerColor— page chromespaceBetweenSections— vertical gap in pixels between content sectionstoolBarStyle— toolbar / app bar styledetailsStyle— avatar, name, and member-count rowdescriptionStyle— description text sectionuriStyle— channel URI / link sectionsettingsStyle/optionsStyle— settings and action option rowstabBarStyle— media / files / links / voice tab barshowGroupsInCommon— whether to show “Groups in Common” section
MessagesListHeaderStyle
MessagesListHeaderStyle
Controls the app bar shown above the message thread.Key properties:
backgroundColor— toolbar fill colorunderlineColor/showUnderline— optional bottom separatornavigationIcon— back/up button drawabletitleTextStyle— channel name text in the toolbarsubTitleStyle— “online” / “N members” subtitle textavatarStyle— avatar thumbnail in the toolbarshowChannelEventsInSequence— whether typing/recording events cycle sequentiallyenableChannelEventIndicator— animated dot during typing/recordingtitleFormatter— overrides how the title is rendered (also accepts a per-itemFormatter)channelAvatarRenderer— custom renderer for the toolbar avatar
MessageInputStyle
MessageInputStyle
Controls the message composition bar at the bottom of the message thread (
MessageInputView).Key properties:backgroundColor— input area backgrounddividerColor— top separator colorsendIconBackgroundColor— send button circle fill colorattachmentIcon/sendMessageIcon/voiceRecordIcon— action button drawablesenableVoiceRecord/enableSendAttachment/enableMention/enableTextStyling— feature togglesinputStyle— innerTextInputStyle(hint, cursor, text appearance)replyMessageStyle/editMessageStyle— inline reply / edit preview stylementionUsersListStyle— suggestion list style
Complete Example
The snippet below shows multiple customizers applied together inApplication.onCreate():