Задание цветов для Chrome Пользовательские вкладки кажутся немного странными. Вы можете указать три цвета: цвет панели инструментов, цвет «вторичной панели инструментов» и цвет панели навигации.
Кажется, есть два способа управления ими. Одним из них является установка трех свойств непосредственно в Builder, например, так:
val builder = CustomTabsIntent.Builder()
builder.setToolbarColor(ContextCompat.getColor(context, R.color.colorPrimary))
builder.setSecondaryToolbarColor(ContextCompat.getColor(context, R.color.colorPrimaryDark))
builder.setNavigationBarColor(ContextCompat.getColor(context, R.color.colorPrimary))
val customTabsIntent = builder.build()
Другой - указать параметры и схему. Возможны три схемы: COLOR_SCHEME_DARK
, COLOR_SCHEME_LIGHT
и COLOR_SCHEME_SYSTEM
. COLOR_SCHEME_SYSTEM
, я думаю, позволяет системе решить, использовать ли темную или светлую схему, в то время как две другие заставляют использовать темную или светлую схему. Когда вы указываете параметры, вы можете установить эти цветовые параметры (панель инструментов, дополнительная панель инструментов, панель навигации) для светлой или темной схемы. Я думаю, что если вы заставите темную схему, вы бы указали параметры для темной схемы. Если вы используете системную схему, то вы можете указать параметры светлого цвета и параметры темного цвета, и соответствующие значения будут использоваться на основе того, что если система решит использовать схему темного или светлого цвета. В любом случае, это мое лучшее предположение.
Пример этого может выглядеть следующим образом:
val builder = CustomTabsIntent.Builder()
builder.setColorScheme(COLOR_SCHEME_DARK)
val darkParams = CustomTabColorSchemeParams.Builder()
.setToolbarColor(ContextCompat.getColor(context, R.color.colorPrimary))
.setSecondaryToolbarColor(ContextCompat.getColor(context, R.color.colorPrimaryDark))
.setNavigationBarColor(ContextCompat.getColor(context, R.color.colorPrimary))
.build()
builder.setColorSchemeParams(COLOR_SCHEME_DARK, darkParams)
val customTabsIntent = builder.build()
(я пробовал разные варианты настройки цветовой схемы и настройки схемы, используемой параметрами) .
В качестве забавной дополнительной заметки, если вы попробуете builder.setColorSchemeParams(COLOR_SCHEME_SYSTEM, params)
, вы получите крат sh: java.lang.IllegalArgumentException: Invalid colorScheme: 0
. Видимо, это особенность, а не ошибка. Вы должны указать цветовые параметры для темной или светлой схемы, а не для системы, которая автоматически выбирает между светлым и темным.
Я полагаю, что вы также можете использовать оба метода вместе. Первый метод (непосредственно устанавливающий значения цвета в компоновщике) затем используется только в том случае, если второй метод (установка цветовых параметров для цветовой схемы) не может быть использован. В соответствии с документацией ,
для обеспечения совместимости с браузерами, не поддерживающими этот API, предоставьте значения по умолчанию.
Так что это фоновая информация. Вот результаты, которые у меня есть.
Чтобы изменить цвет панели инструментов, используйте первый метод (builder.setToolbarColor)
. Easy peasy. Но использование второго метода (CustomTabColorSchemeParams
) ничего не дает.
Я на самом деле не тестировал «вторичную панель инструментов». Я не был уверен, что это было. Кажется, это дополнительная нижняя панель инструментов, хотя то, как она используется, устарело в пользу RemoteViews
. Я не думаю, что это будет актуально для большинства людей.
Ни один из этих методов не влияет на цвет панели навигации.
Если взглянуть на это иначе, со вторым методом, builder.setColorScheme(COLOR_SCHEME_DARK)
может быть Chrome
Возможно, кто-то может объяснить кое-что из этого, заставляя *1048* Пользовательские вкладки использовать светлую или темную схему. странное поведение, или подтвердите, что это ошибка Google. Или, возможно, вы можете указать на то, что я могу ошибаться. Мой главный вопрос: как я могу на самом деле изменить цвет панели навигации для Chrome Пользовательские вкладки? Как я заметил, эти методы не работают.