TGViewer
AppFiles - Mobile Development AppFiles - Mobile Development @applib · 2.18K subscribers
Post #3852 393
Создание кастомного Toolbar с Jetpack Compose. Подробный разбор всех попыток и решений

Сегодня предлагаю разобрать путь создания кастомного тулбара от первой кривой реализации до оптимизированного решения.

И главная проблема, которую надо решить при создании этого компонента это центрирование title и subtitle. Эта проблема возникает потому что у нас может быть тулбар с разным количеством иконок по обе стороны от заголовка, текстом и иконками или только с title. И если ширина иконок у нас стандартна (44 dp), и достаточно просто умножить эту ширину на количество иконок справа, чтобы понять свободное пространство для title и subtitle, то с текстом с одной или с двух сторон всё намного сложнее, так как мы не можем заранее вычислить ширину этого текста, а значит не можем правильно центрировать и задать ширину title и subtitle.

В этой статье я расскажу, как я решил этот вопрос.

Статья: https://habr.com/ru/companies/psb/articles/974368/
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
  • 👍 2
More from @applib
  1. Oct 15, 2026AsoBeast - self-hosted ASO-инструмент для отслеживания ключевых слов в App Store и Google…
  2. Oct 14, 2026Куда девается место на диске: Xcode, рабочие деревья и ИИ-агенты Несколько недель назад мо…
  3. Oct 14, 2026Как эффективно отлаживать код, когда вы перестали его понимать С развитием AI-кодинга возн…
  4. Oct 14, 2026CodexKit - SDK для создания агентов CodexKit — это SDK на Swift для встраивания агентов в…
  5. Oct 13, 2026Куда делись все вакансии для Android-разработчиков? Я всё думаю о том, насколько иначе рын…
  6. Oct 13, 2026Мы научили агента писать тесты так, как их пишет наша команда Каждому iOS-разработчику зна…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →