Jetpack compose, работа с цветом и Defaults классы
Всем привет ✅ В данный момент я занимаюсь разработкой проекта и перешёл к финальной части — UI-оформлению.
На одном из этапов возникла задача: реализовать полностью кастомный SearchBar с минимальным использованием стандартных Material-компонентов. По сути, в основе только BasicTextField и свой decorator в конструкторе.Когда подошёл к вопросам верстки, столкнулся с проблемой выбора цветов: хотелось добиться полной согласованности с гайдлайнами Material Design. Начал детально разбираться в иерархии цветовых схем, читать гайды. И тут, изучая исходники гугловского SearchBar, обратил внимание на любопытный класс — SearchBarDefaults ✨.
Полез в исходный код и был удивлён: этот класс существует именно для хранения всех стандартных значений компонента, включая цвета во всех возможных состояниях. Фактически, элемент подтягивает цветовые токены, уже определённые текущей темой приложения.
Интересно, что даже в гугловских темплейтах такой паттерн часто не используется! Так что если кто-то ещё не обращал внимание — обязательно попробуйте. Подход реально удобный: позволяет кастомному компоненту оставаться максимально совместимым с общим дизайном и избавляет от лишних «танцев с бубнами» 🔥