SlideShare uma empresa Scribd logo
1 de 24
Baixar para ler offline
Styles reaproveitáveis no Xamarin.Forms
Trilha Xamarin
@LetticiaNicoli
Software Developer
Apresentação
● Desenvolvedora na Lambda3;
● MTAC (Multi-Platform Associate Contributor);
● Adepta a novas tecnologias e metodologias
ágeis de desenvolvimento.
@LetticiaNicoli
21 anos
<ContentPage.Content>
<StackLayout>
<Label Text="These labels"
HorizontalOptions="Center"
VerticalOptions="CenterAndExpand"/>
<Label Text="are not"
HorizontalOptions="Center"
VerticalOptions="CenterAndExpand"/>
<Label Text="using styles"
HorizontalOptions="Center"
VerticalOptions="CenterAndExpand"/>
</StackLayout>
</ContentPage.Content>
ALTERAÇÃO SIMPLES
● Texto: Negrito
● Cor do Texto: Azul
● Fonte: Grande
Fica pronto rápido né!? :)
É hoje que
eu vou
jogar fifinha!
FontSize="Large"
TextColor="Blue"
FontAttributes="Bold"
<ContentPage.Content>
<StackLayout>
<Label Text="These labels"
HorizontalOptions="Center"
VerticalOptions="CenterAndExpand"/>
<Label Text="are not"
HorizontalOptions="Center"
VerticalOptions="CenterAndExpand"/>
<Label Text="using styles"
HorizontalOptions="Center"
VerticalOptions="CenterAndExpand"/>
</StackLayout>
</ContentPage.Content>
Para cada label !!
Começou a dar mais trabalho, não!?
Agora imagine se tivéssemos
que alterar tudo isso
para diversos
campos e telas
do aplicativo!
Estilos
● Permitem que a aparência de elementos visuais seja personalizada.
● São definidos para um tipo específico de controle.
● Possibilita agrupamento, facilitando alterações e manutenabilidade.
● Redução de código relacionado ao estilo do elemento.
Controle
Aplicados ao controle e filhos
Página
Aplicados a página e filhos
Aplicativo
Aplicados em toda a aplicação
Níveis de Utilização
Estilos foram projetados
principalmente para
XAML mas podem ser
criados em C#.
Estilos Explícitos
● Aplicado em controles específicos
TargetType: Elemento visual (obrigatório)
x.Key: Id para o estilo (“nome classe css”)
Os estilos que estão abaixo na hierarquia de exibição têm prioridade sobre aqueles definidos acima.
Observação:
Estilos Implícitos
● Aplicado em todos os controles do mesmo TargetType
TargetType: Elemento visual (obrigatório)
x.Key: Não utilizado
● Não exige que os controles façam referência ao estilo.
Não funciona para elementos derivados de TargetType.
Exemplo: Entry -> CustomEntry
Observação:
Estilos Globais
● Disponíveis para serem utilizados em toda aplicação.
● Podem ser explícitos ou implícitos.
● Por padrão, deve-se implementar no XAML da Application.
Os estilos que estão abaixo na hierarquia de exibição têm prioridade sobre aqueles definidos acima.
Observação:
Estilos Dinâmicos
● Respondendo alterações de estilo em tempo de execução.
● Deve-se utilizar DynamicResource ao invés de StaticResource.
● Geralmente realizado através do code-behind.
<ContentPage.Resources>
<ResourceDictionary>
<Style x:Key="greenSearchBarStyle" TargetType="SearchBar">
<Setter Property="TextColor" Value="Green" />
</Style>
</ResourceDictionary>
</ContentPage.Resources>
<ContentPage.Content>
<StackLayout Padding="0,20,0,0">
<SearchBar Placeholder="These SearchBar controls"
Style="{DynamicResource searchBarStyle}" />
</StackLayout>
</ContentPage.Content>
void OnButtonClicked(object sender, EventArgs e)
{
Resources["searchBarStyle"] = Resources["greenSearchBarStyle"];
}
C#
Herança de Estilos
● Os estilos podem herdar outros estilos.
● Deve-se utilizar BasedOn.
● Redução de duplicidade e aumento de reutilização de código.
Um estilo implícito pode ser derivado de um estilo explícito.
Porém, um estilo explícito não pode ser derivado de um estilo implícito.
Observação:
<ContentPage.Resources>
<ResourceDictionary>
<Style x:Key="baseStyle" TargetType="View">
<Setter Property="HorizontalOptions" Value="Center" />
<Setter Property="VerticalOptions" Value="CenterAndExpand" />
</Style>
<Style x:Key="labelStyle" TargetType="Label"
BasedOn="{StaticResource baseStyle}">
<Setter Property="TextColor" Value="Teal" />
</Style>
</ResourceDictionary>
</ContentPage.Resources>
<ContentPage.Content>
<StackLayout Padding="0,20,0,0">
<Label Text="These labels"
Style="{StaticResource labelStyle}" />
</StackLayout>
</ContentPage.Content>
Um estilo só pode herdar estilos do
mesmo nível ou acima.
Herança de Estilo Dinâmico
● É possível derivar um estilo dinâmico substituindo BasedOn
por BaseResourceKey.
<ContentPage.Resources>
<ResourceDictionary>
<Style x:Key="tealSearchBarStyle" TargetType="SearchBar" BaseResourceKey="searchBarStyle">
..
</Style>
</ResourceDictionary>
</ContentPage.Resources>
<ContentPage.Content>
<StackLayout Padding="0,20,0,0">
<SearchBar Text="These SearchBar controls" Style="{StaticResource tealSearchBarStyle}" />
</StackLayout>
</ContentPage.Content>
Estilos OnPlatform
<ContentPage.Resources>
<ResourceDictionary>
<Style x:Key="greenSearchBarStyle" TargetType="SearchBar">
<Setter Property="BackgroundColor">
<Setter.Value>
<OnPlatform x:TypeArguments="Color" Android="#404040" />
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
</ContentPage.Resources>
● É possível reaproveitar OnPlatform nos estilos criados.
Estilos de Dispositivos
● Xamarin.Forms inclui 6 estilos dinâmicos na classe Device.Style
BodyStyle ListItemTextStyle
CaptionStyle SubtitleStyle
ListItemDetailTextStyle TitleStyle
Acessibilidade
● Respeita preferências de acessibilidade de acordo com cada plataforma
TEMAS
Temas
● Disponibilização de Temas
(Light e Dark).
● Precisa do Xamarin.Forms 2.3
preview release.
BoxView
● HorizontalRule
● Circle
● Rounded
Label
● Header
● Subheader
● Body
● Link
● Inverse
Button
● Default
● Primary
● Success
● Info
● Warning
● Danger
● Link
● Small
● Large
Image
● Circle
● Rounded
● Thumbnail
Obrigada!
@LetticiaNicoli
letticia.nicoli@lambda3.com.br
Bota na
cabeça
que estilo
não é
marra!
“Marquin, DJ”

Mais conteúdo relacionado

Semelhante a Styles reaproveitáveis no Xamarin.Forms - TDC 2017

Curso de Java (Parte 6) Introdução a Front-end
Curso de Java (Parte 6) Introdução a Front-endCurso de Java (Parte 6) Introdução a Front-end
Curso de Java (Parte 6) Introdução a Front-endMario Sergio
 
Apostila Css ( Apostilando.com )
Apostila Css ( Apostilando.com )Apostila Css ( Apostilando.com )
Apostila Css ( Apostilando.com )Rodrigo Dias
 
LPII_Aula_7-JQuery.pdf
LPII_Aula_7-JQuery.pdfLPII_Aula_7-JQuery.pdf
LPII_Aula_7-JQuery.pdfGabrielaMota46
 
2. Introdução ao CSSpptx.pdf
2. Introdução ao CSSpptx.pdf2. Introdução ao CSSpptx.pdf
2. Introdução ao CSSpptx.pdfRubenManhia
 
O que todos os developers devem saber sobre seo
O que todos os developers devem saber sobre seoO que todos os developers devem saber sobre seo
O que todos os developers devem saber sobre seointrofini
 
PW00 - Programação Web html e estilo CSS.pdf
PW00 - Programação Web html e estilo CSS.pdfPW00 - Programação Web html e estilo CSS.pdf
PW00 - Programação Web html e estilo CSS.pdfSilvano Oliveira
 
Tutorial visão automação de testes e casper js
Tutorial visão automação de testes e casper jsTutorial visão automação de testes e casper js
Tutorial visão automação de testes e casper js4ALL Tests
 
Tutorial - Visão sobre Automação de Testes com CasperJS
Tutorial - Visão sobre Automação de Testes com CasperJSTutorial - Visão sobre Automação de Testes com CasperJS
Tutorial - Visão sobre Automação de Testes com CasperJSFrederico Allan
 
Como Perder Peso (no browser)
Como Perder Peso (no browser)Como Perder Peso (no browser)
Como Perder Peso (no browser)Zeno Rocha
 
Introdução ao framework Django
Introdução ao framework DjangoIntrodução ao framework Django
Introdução ao framework DjangoEduardo Palma
 
Básico em (X)HTML e CSS
Básico em (X)HTML e CSSBásico em (X)HTML e CSS
Básico em (X)HTML e CSSKako Botasso
 

Semelhante a Styles reaproveitáveis no Xamarin.Forms - TDC 2017 (20)

Curso de Java (Parte 6) Introdução a Front-end
Curso de Java (Parte 6) Introdução a Front-endCurso de Java (Parte 6) Introdução a Front-end
Curso de Java (Parte 6) Introdução a Front-end
 
Css Curso completo
Css Curso completoCss Curso completo
Css Curso completo
 
Apostila Css ( Apostilando.com )
Apostila Css ( Apostilando.com )Apostila Css ( Apostilando.com )
Apostila Css ( Apostilando.com )
 
SAAS - Search as a Service 2017
SAAS - Search as a Service 2017SAAS - Search as a Service 2017
SAAS - Search as a Service 2017
 
LPII_Aula_7-JQuery.pdf
LPII_Aula_7-JQuery.pdfLPII_Aula_7-JQuery.pdf
LPII_Aula_7-JQuery.pdf
 
Slides .pptx.pdf
Slides .pptx.pdfSlides .pptx.pdf
Slides .pptx.pdf
 
2. Introdução ao CSSpptx.pdf
2. Introdução ao CSSpptx.pdf2. Introdução ao CSSpptx.pdf
2. Introdução ao CSSpptx.pdf
 
O que todos os developers devem saber sobre seo
O que todos os developers devem saber sobre seoO que todos os developers devem saber sobre seo
O que todos os developers devem saber sobre seo
 
Workshop MongoDB
Workshop MongoDBWorkshop MongoDB
Workshop MongoDB
 
PW00 - Programação Web html e estilo CSS.pdf
PW00 - Programação Web html e estilo CSS.pdfPW00 - Programação Web html e estilo CSS.pdf
PW00 - Programação Web html e estilo CSS.pdf
 
Php Básico - Parte 2
Php Básico - Parte 2Php Básico - Parte 2
Php Básico - Parte 2
 
Hibernate-consultas
Hibernate-consultasHibernate-consultas
Hibernate-consultas
 
Tutorial visão automação de testes e casper js
Tutorial visão automação de testes e casper jsTutorial visão automação de testes e casper js
Tutorial visão automação de testes e casper js
 
Tutorial - Visão sobre Automação de Testes com CasperJS
Tutorial - Visão sobre Automação de Testes com CasperJSTutorial - Visão sobre Automação de Testes com CasperJS
Tutorial - Visão sobre Automação de Testes com CasperJS
 
CSS
CSSCSS
CSS
 
Framework Entities
Framework EntitiesFramework Entities
Framework Entities
 
Como Perder Peso (no browser)
Como Perder Peso (no browser)Como Perder Peso (no browser)
Como Perder Peso (no browser)
 
Introdução ao framework Django
Introdução ao framework DjangoIntrodução ao framework Django
Introdução ao framework Django
 
Oficina de Django
Oficina de DjangoOficina de Django
Oficina de Django
 
Básico em (X)HTML e CSS
Básico em (X)HTML e CSSBásico em (X)HTML e CSS
Básico em (X)HTML e CSS
 

Mais de Letticia Nicoli

.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?Letticia Nicoli
 
Generalização prematura e complexidade acidental, a raiz do mal de todo sof...
Generalização prematura e complexidade acidental, a raiz do mal de todo sof...Generalização prematura e complexidade acidental, a raiz do mal de todo sof...
Generalização prematura e complexidade acidental, a raiz do mal de todo sof...Letticia Nicoli
 
Machine Learning para devs com ML.NET
Machine Learning para devs com ML.NETMachine Learning para devs com ML.NET
Machine Learning para devs com ML.NETLetticia Nicoli
 
Developer Experience no Nubank
Developer Experience no NubankDeveloper Experience no Nubank
Developer Experience no NubankLetticia Nicoli
 
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos.
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos.Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos.
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos.Letticia Nicoli
 
Machine Learning para devs com ML.NET
Machine Learning para devs com ML.NETMachine Learning para devs com ML.NET
Machine Learning para devs com ML.NETLetticia Nicoli
 
Xamarin + App Center + Azure DevOps = 
Xamarin + App Center + Azure DevOps = Xamarin + App Center + Azure DevOps = 
Xamarin + App Center + Azure DevOps = Letticia Nicoli
 
Desenvolvimento Cross-mobile com Xamarin, por onde começar?
Desenvolvimento Cross-mobile com Xamarin, por onde começar?Desenvolvimento Cross-mobile com Xamarin, por onde começar?
Desenvolvimento Cross-mobile com Xamarin, por onde começar?Letticia Nicoli
 
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos Letticia Nicoli
 
Generalização prematura e complexidade acidental, a raiz do mal de todo software
Generalização prematura e complexidade acidental, a raiz do mal de todo softwareGeneralização prematura e complexidade acidental, a raiz do mal de todo software
Generalização prematura e complexidade acidental, a raiz do mal de todo softwareLetticia Nicoli
 
Visual Studio App Center - Continuous Everything
Visual Studio App Center - Continuous Everything Visual Studio App Center - Continuous Everything
Visual Studio App Center - Continuous Everything Letticia Nicoli
 
Write beautiful code, faster
Write beautiful code, fasterWrite beautiful code, faster
Write beautiful code, fasterLetticia Nicoli
 
Como Mobile DevOps me ajudou no sucesso de desenvolvimento de aplicativos.
Como Mobile DevOps me ajudouno sucesso de desenvolvimento de aplicativos.Como Mobile DevOps me ajudouno sucesso de desenvolvimento de aplicativos.
Como Mobile DevOps me ajudou no sucesso de desenvolvimento de aplicativos.Letticia Nicoli
 
Precisamos falar sobre Visual Studio App Center
Precisamos falar sobre Visual Studio App CenterPrecisamos falar sobre Visual Studio App Center
Precisamos falar sobre Visual Studio App CenterLetticia Nicoli
 
Dicas e Truques para aumentar sua produtividade no Visual Studio
Dicas e Truques para aumentar sua produtividade no Visual StudioDicas e Truques para aumentar sua produtividade no Visual Studio
Dicas e Truques para aumentar sua produtividade no Visual StudioLetticia Nicoli
 
DevOps aplicado a Mobile: Challenge Accepted
DevOps aplicado a Mobile: Challenge AcceptedDevOps aplicado a Mobile: Challenge Accepted
DevOps aplicado a Mobile: Challenge AcceptedLetticia Nicoli
 
Desenvolvimento Cross Mobile com Xamarin, por onde começar?
Desenvolvimento Cross Mobile com Xamarin, por onde começar?Desenvolvimento Cross Mobile com Xamarin, por onde começar?
Desenvolvimento Cross Mobile com Xamarin, por onde começar?Letticia Nicoli
 
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativosMobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativosLetticia Nicoli
 
Últimas atualizações de produtividade no Visual Studio 2017​
Últimas atualizações de produtividade no Visual Studio 2017​Últimas atualizações de produtividade no Visual Studio 2017​
Últimas atualizações de produtividade no Visual Studio 2017​Letticia Nicoli
 

Mais de Letticia Nicoli (20)

.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?
 
Generalização prematura e complexidade acidental, a raiz do mal de todo sof...
Generalização prematura e complexidade acidental, a raiz do mal de todo sof...Generalização prematura e complexidade acidental, a raiz do mal de todo sof...
Generalização prematura e complexidade acidental, a raiz do mal de todo sof...
 
Machine Learning para devs com ML.NET
Machine Learning para devs com ML.NETMachine Learning para devs com ML.NET
Machine Learning para devs com ML.NET
 
O futuro do .NET
O futuro do .NETO futuro do .NET
O futuro do .NET
 
Developer Experience no Nubank
Developer Experience no NubankDeveloper Experience no Nubank
Developer Experience no Nubank
 
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos.
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos.Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos.
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos.
 
Machine Learning para devs com ML.NET
Machine Learning para devs com ML.NETMachine Learning para devs com ML.NET
Machine Learning para devs com ML.NET
 
Xamarin + App Center + Azure DevOps = 
Xamarin + App Center + Azure DevOps = Xamarin + App Center + Azure DevOps = 
Xamarin + App Center + Azure DevOps = 
 
Desenvolvimento Cross-mobile com Xamarin, por onde começar?
Desenvolvimento Cross-mobile com Xamarin, por onde começar?Desenvolvimento Cross-mobile com Xamarin, por onde começar?
Desenvolvimento Cross-mobile com Xamarin, por onde começar?
 
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos
 
Generalização prematura e complexidade acidental, a raiz do mal de todo software
Generalização prematura e complexidade acidental, a raiz do mal de todo softwareGeneralização prematura e complexidade acidental, a raiz do mal de todo software
Generalização prematura e complexidade acidental, a raiz do mal de todo software
 
Visual Studio App Center - Continuous Everything
Visual Studio App Center - Continuous Everything Visual Studio App Center - Continuous Everything
Visual Studio App Center - Continuous Everything
 
Write beautiful code, faster
Write beautiful code, fasterWrite beautiful code, faster
Write beautiful code, faster
 
Como Mobile DevOps me ajudou no sucesso de desenvolvimento de aplicativos.
Como Mobile DevOps me ajudouno sucesso de desenvolvimento de aplicativos.Como Mobile DevOps me ajudouno sucesso de desenvolvimento de aplicativos.
Como Mobile DevOps me ajudou no sucesso de desenvolvimento de aplicativos.
 
Precisamos falar sobre Visual Studio App Center
Precisamos falar sobre Visual Studio App CenterPrecisamos falar sobre Visual Studio App Center
Precisamos falar sobre Visual Studio App Center
 
Dicas e Truques para aumentar sua produtividade no Visual Studio
Dicas e Truques para aumentar sua produtividade no Visual StudioDicas e Truques para aumentar sua produtividade no Visual Studio
Dicas e Truques para aumentar sua produtividade no Visual Studio
 
DevOps aplicado a Mobile: Challenge Accepted
DevOps aplicado a Mobile: Challenge AcceptedDevOps aplicado a Mobile: Challenge Accepted
DevOps aplicado a Mobile: Challenge Accepted
 
Desenvolvimento Cross Mobile com Xamarin, por onde começar?
Desenvolvimento Cross Mobile com Xamarin, por onde começar?Desenvolvimento Cross Mobile com Xamarin, por onde começar?
Desenvolvimento Cross Mobile com Xamarin, por onde começar?
 
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativosMobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos
 
Últimas atualizações de produtividade no Visual Studio 2017​
Últimas atualizações de produtividade no Visual Studio 2017​Últimas atualizações de produtividade no Visual Studio 2017​
Últimas atualizações de produtividade no Visual Studio 2017​
 

Styles reaproveitáveis no Xamarin.Forms - TDC 2017