Xamarin.Forms -  Device Styles - III


   Neste artigo vou mostrar como usar os estilos de dispositivos, Device Styles, em aplicações Xamarin Forms.   

No artigo anterior mostrei como usar estilos em uma aplicação Xamarin Forms usando StaticResource, vamos continuar apresentando os Estilos, abordando neste artigo a utilização de Device Styles ou estilos de dispositivos.

O Xamarin.Forms inclui seis estilos dinâmicos, conhecidos como estilos de dispositivo, ou Device Styles, na classe Device.Styles. São eles:  BodyStyle, CaptionStyle, ListItemDetailTextStyle, ListItemTextStyle, SubtitleStyle e TitleStyle.

Todos os seis estilos só podem ser aplicados às instâncias de uma Label. Por exemplo, um rótulo que está exibindo o corpo de um parágrafo pode definir sua propriedade Style para BodyStyle.

Os device styles ou estilos de dispositivo estão vinculados ao uso da extensão de marcação DynamicResource. A aparência dos estilos do dispositivo é diferente em cada plataforma.

Os estilos de dispositivo também podem ser derivados ao definir a propriedade BaseResourceKey como o nome da chave para o estilo do dispositivo.

No exemplo que iremos criar a seguir vamos definir um estilo chamdo meuBodyEstilo que herda de BodyStyle e define uma cor de texto como Blue e um BackgroundColor Yellow.

Usando Device Styles

Vamos usar o mesmo projeto criado no artigo anterior. Abra o arquivo App.xaml e inclua o código abaixo:

<?xml version="1.0" encoding="utf-8" ?>
<Application xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="XF_Estilos.App">
	<Application.Resources>
           <!-- Application resource dictionary -->
           <ResourceDictionary>
           <Style x:Key="meuBodyEstilo" TargetType="Label" BaseResourceKey="BodyStyle">
                <Setter Property="TextColor" Value="Blue" />
                <Setter Property="BackgroundColor" Value="Yellow" />
            </Style>
           </ResourceDictionary>
    </Application.Resources>
</Application>

 

Agora abra o arquivo MainPage.xaml e inclua o código a seguir:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:XF_Estilos"
             x:Class="XF_Estilos.MainPage">
    <ContentPage.Content>
        <StackLayout Padding="0,20,0,0">
            <Label Text="Estilo de Title" Style="{DynamicResource TitleStyle}" />
            <Label Text="Estilo de texto de subtítulo" Style="{DynamicResource SubtitleTextStyle}" />
            <Label Text="Estilo de Body" Style="{DynamicResource BodyStyle}" />
            <Label Text="Estilo de Caption" Style="{DynamicResource CaptionStyle}" />
            <Label Text="Estilo de texto de detalhe de item de Listview" Style="{DynamicResource ListItemDetailTextStyle}" />
            <Label Text="Estilo de texto de item de Listview" Style="{DynamicResource ListItemTextStyle}" />
            <Label Text="sem estilo" />
            <Label Text="MeuBodyStyle" Style="{StaticResource meuBodyStyle}" />
        </StackLayout>
    </ContentPage.Content>
</ContentPage>
 
 

Neste código estamos usando cada um dos estilos de dispositivos : TitleStyle, SubtitleTextStyle, BodyStyle, CaptionStyle, ListItemDetailTextStyle e ListItemTextStyle. Observe que cada um desses estilos é usado com DynamicResource.

Estamos usando ainda o estilo definido pelo identificador meuBodyStyle que herda de BodyStyle.

Os estilos do dispositivo respeitam as preferências de acessibilidade, então o tamanho das fontes mudará à medida que as preferências de acessibilidade são alteradas em cada plataforma.

Portanto, para suportar texto acessível, assegure-se de que os estilos do dispositivo sejam usados como base para qualquer estilo de texto dentro do seu aplicativo.

Na próxima parte do artigo vou abordar a herança de estilos.

Disse-lhe Jesus: Eu sou o caminho, e a verdade e a vida; ninguém vem ao Pai, senão por mim.
João 14:6


Referências:


José Carlos Macoratti