Estilos de dispositivo em Xamarin.Forms
Xamarin.Forms inclui seis estilos dinâmicos, conhecidos como estilos de dispositivo, na classe Device.Styles.
Os estilos de dispositivo são:
Todos os seis estilos só podem ser aplicados a Label
instâncias. Por exemplo, um Label
que está exibindo o corpo de um parágrafo pode definir sua Style
propriedade como BodyStyle
.
O exemplo de código a seguir demonstra o uso dos estilos de dispositivo em uma página XAML:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="Styles.DeviceStylesPage" Title="Device" IconImageSource="xaml.png">
<ContentPage.Resources>
<ResourceDictionary>
<Style x:Key="myBodyStyle" TargetType="Label"
BaseResourceKey="BodyStyle">
<Setter Property="TextColor" Value="Accent" />
</Style>
</ResourceDictionary>
</ContentPage.Resources>
<ContentPage.Content>
<StackLayout Padding="0,20,0,0">
<Label Text="Title style"
Style="{DynamicResource TitleStyle}" />
<Label Text="Subtitle text style"
Style="{DynamicResource SubtitleStyle}" />
<Label Text="Body style"
Style="{DynamicResource BodyStyle}" />
<Label Text="Caption style"
Style="{DynamicResource CaptionStyle}" />
<Label Text="List item detail text style"
Style="{DynamicResource ListItemDetailTextStyle}" />
<Label Text="List item text style"
Style="{DynamicResource ListItemTextStyle}" />
<Label Text="No style" />
<Label Text="My body style"
Style="{StaticResource myBodyStyle}" />
</StackLayout>
</ContentPage.Content>
</ContentPage>
Os estilos de dispositivo estão vinculados ao uso da extensão de DynamicResource
marcação. A natureza dinâmica dos estilos pode ser vista no iOS alterando as configurações de acessibilidade para o tamanho do texto. A aparência dos estilos de dispositivo é diferente em cada plataforma, conforme mostrado nas capturas de tela a seguir:
Os estilos de dispositivo também podem ser derivados definindo a BaseResourceKey
propriedade como o nome da chave para o estilo do dispositivo. No exemplo de código acima, myBodyStyle
herda e BodyStyle
define uma cor de texto acentuada. Para obter mais informações sobre herança de estilo dinâmico, consulte Herança de estilo dinâmico.
O exemplo de código a seguir demonstra a página equivalente em C#:
public class DeviceStylesPageCS : ContentPage
{
public DeviceStylesPageCS ()
{
var myBodyStyle = new Style (typeof(Label)) {
BaseResourceKey = Device.Styles.BodyStyleKey,
Setters = {
new Setter {
Property = Label.TextColorProperty,
Value = Color.Accent
}
}
};
Title = "Device";
IconImageSource = "csharp.png";
Padding = new Thickness (0, 20, 0, 0);
Content = new StackLayout {
Children = {
new Label { Text = "Title style", Style = Device.Styles.TitleStyle },
new Label { Text = "Subtitle style", Style = Device.Styles.SubtitleStyle },
new Label { Text = "Body style", Style = Device.Styles.BodyStyle },
new Label { Text = "Caption style", Style = Device.Styles.CaptionStyle },
new Label { Text = "List item detail text style",
Style = Device.Styles.ListItemDetailTextStyle },
new Label { Text = "List item text style", Style = Device.Styles.ListItemTextStyle },
new Label { Text = "No style" },
new Label { Text = "My body style", Style = myBodyStyle }
}
};
}
}
A Style
propriedade de cada Label
instância é definida como a propriedade apropriada da Device.Styles
classe.
Acessibilidade
Os estilos de dispositivo respeitam as preferências de acessibilidade, portanto, os tamanhos de fonte serão alterados à medida que as preferências de acessibilidade forem alteradas em cada plataforma. Portanto, para dar suporte a texto acessível, verifique se os estilos de dispositivo são usados como base para quaisquer estilos de texto em seu aplicativo.
As capturas de tela a seguir demonstram os estilos de dispositivo em cada plataforma, com o menor tamanho de fonte acessível:
As capturas de tela a seguir demonstram os estilos de dispositivo em cada plataforma, com o maior tamanho de fonte acessível: