Estilo personalizado

É possível personalizar as cores, a tipografia, o espaçamento, as bordas e os cantos destes componentes do kit de interface do Places:
O kit de interface do Places oferece uma abordagem de sistema de design para personalização visual baseada no Material Design (com algumas modificações específicas do Google Maps). Consulte a referência do Material Design para Cor e Tipografia. Por padrão, o estilo segue a linguagem de design visual do Google Maps.

A aparência do componente é personalizada com as structs placesMaterialColor
, placesMaterialFont
, placesMaterialShape
e placesMaterialTheme
.
É possível personalizar os seguintes estilos:
Atributo do tema | Uso |
---|---|
Cor | |
theme.color.surface |
Segundo plano do contêiner e da caixa de diálogo |
theme.color.outlineDecorative |
Borda do contêiner |
theme.color.primary |
Links, indicador de carregamento, ícones de visão geral |
theme.color.onSurface |
Títulos, conteúdo da caixa de diálogo |
theme.color.onSurfaceVariant |
Informações sobre o lugar |
theme.color.secondaryContainer |
Plano de fundo do botão |
theme.color.onSecondaryContainer |
Texto e ícone do botão |
theme.color.neutralContainer |
Revisar o selo de data, carregar formas de marcador de posição |
theme.color.onNeutralContainer |
Data da revisão, erro de carregamento |
theme.color.positiveContainer |
Selo de carregador de VE disponível |
theme.color.onPositiveContainer |
Conteúdo disponível do selo de carregador de VE |
theme.color.positive |
Colocar o marcador "Aberto agora" |
theme.color.negative |
O rótulo "Fechado" agora é "Fechado" |
theme.color.info |
Ícone de entrada acessível |
theme.measurement.borderWidthButton |
Botões "Abrir no Maps" e "OK" |
Tipografia | |
theme.font.bodySmall |
Informações sobre o lugar |
theme.font.bodyMedium |
Informações do lugar, conteúdo da caixa de diálogo |
theme.font.labelMedium |
Conteúdo do selo |
theme.font.labelLarge |
Conteúdo do botão |
theme.font.headlineMedium |
Títulos de caixa de diálogo |
theme.font.displaySmall |
Nome do lugar |
theme.font.titleSmall |
Nome do lugar |
Espaçamento | |
theme.measurement.spacingExtraSmall |
|
theme.measurement.spacingSmall |
|
theme.measurement.spacingMedium |
|
theme.measurement.spacinglarge |
|
theme.measurement.spacingExtraLarge |
|
theme.measurement.spacingTwoExtraLarge |
|
Medição | |
borderWidth |
Contêiner |
theme.measurement.borderWidthButton |
|
Forma | |
theme.shape.cornerRadius |
Contêiner |
theme.shape.cornerRadiusButton |
Botões "Abrir no Maps" e "OK" (exclui o botão de ícone redondo) |
theme.shape.cornerRadiusThumbnail |
Colocar imagem em miniatura |
theme.shape.cornerRadiusCollageOuter |
Colagem de mídia |
theme.shape.cornerRadiusCard |
Card de lugar, card de avaliação do usuário |
theme.shape.cornerRadiusDialog |
Caixa de diálogo de divulgação do Google Maps |
Atribuição de marca do Google Maps | |
attribution.lightModeColor |
Botão de atribuição e divulgação do Google Maps no tema claro (enums para branco, cinza e preto) |
attribution.darkModeColor |
Botão de atribuição e divulgação do Google Maps no tema escuro (enums para branco, cinza e preto) |
Cores de atribuição

Os Termos de Serviço do Google Maps exigem que você use uma das três cores da marca para a atribuição do Google Maps. Essa atribuição precisa estar visível e acessível quando as mudanças de personalização forem feitas.
Oferecemos três cores de marca para escolher, que podem ser definidas de forma independente para temas claros e escuros:
- Tema claro:
attributionColorLight
com enums para branco, cinza e preto. - Tema escuro:
attributionColorDark
com enums para branco, cinza e preto.
Exemplos
Essa função cria um tema que substitui os atributos de estilo padrão. Todos os atributos do tema que não forem substituídos usarão os estilos padrão.Swift
// Same for compact and full func makeTemplateTheme(colorScheme: ColorScheme) -> PlacesMaterialTheme { var theme = PlacesMaterialTheme() var color = PlacesMaterialColor() color.surface = (colorScheme == .dark ? .blue : .gray) color.buttonBorder = (colorScheme == .dark ? .pink : .orange) color.outlineDecorative = (colorScheme == .dark ? .white : .black) color.onSurface = (colorScheme == .dark ? .yellow : .red) color.onSurfaceVariant = (colorScheme == .dark ? .white : .blue) color.onSecondaryContainer = (colorScheme == .dark ? .white : .red) color.secondaryContainer = (colorScheme == .dark ? .green : .purple) color.positive = (colorScheme == .dark ? .yellow : .red) color.primary = (colorScheme == .dark ? .yellow : .purple) color.info = (colorScheme == .dark ? .yellow : .purple) var shape = PlacesMaterialShape() shape.cornerRadius = 10 var font = PlacesMaterialFont() font.labelLarge = .system(size: UIFontMetrics.default.scaledValue(for: 18)) font.headlineMedium = .system(size: UIFontMetrics.default.scaledValue(for: 15)) font.bodyLarge = .system(size: UIFontMetrics.default.scaledValue(for: 15)) font.bodyMedium = .system(size: UIFontMetrics.default.scaledValue(for: 12)) font.bodySmall = .system(size: UIFontMetrics.default.scaledValue(for: 11)) var attribution = PlacesMaterialAttribution() attribution.lightModeColor = .black attribution.darkModeColor = .white theme.measurement.borderWidthButton = 1 theme.color = color theme.shape = shape theme.font = font theme.attribution = attribution return theme }
Exemplos completos para cada componente
- Exemplo completo de estilo do componente Place Details.
- Exemplo completo de estilo do componente Place Search.