Стили устройств в Xamarin.Forms

Xamarin.Forms включает шесть динамических стилей, известных как стили устройств, в классе Device.Styles.

Стили устройств :

Все шесть стилей могут применяться только к Label экземплярам. Например, объект, отображающий текст абзаца, Label может задать для свойства значение Style BodyStyle.

В следующем примере кода показано использование стилей устройств на странице 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>

Стили устройств привязаны к использованию DynamicResource расширения разметки. Динамический характер стилей можно увидеть в iOS, изменив параметры специальных возможностей для размера текста. Внешний вид стилей устройств отличается на каждой платформе, как показано на следующих снимках экрана:

Стили устройств на каждой платформе

Стили устройств также могут быть производными от этого, задав BaseResourceKey свойству имя ключа для стиля устройства. В приведенном выше myBodyStyle примере кода наследуется от BodyStyle и задает выделенный цвет текста. Дополнительные сведения о наследовании динамического стиля см. в разделе "Динамическое наследование стилей".

В следующем примере кода показана эквивалентная страница в 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 }
            }
        };
    }
}

Свойство Style каждого Label экземпляра имеет соответствующее свойство из Device.Styles класса.

Специальные возможности

Стили устройств учитывают параметры специальных возможностей, поэтому размеры шрифтов изменятся по мере изменения параметров специальных возможностей на каждой платформе. Таким образом, чтобы поддерживать доступный текст, убедитесь, что стили устройств используются в качестве основы для любых стилей текста в приложении.

На следующих снимках экрана показаны стили устройств на каждой платформе с наименьшим размером шрифта:

Доступные стили небольших устройств на каждой платформе

На следующих снимках экрана показаны стили устройств на каждой платформе с наибольшим доступным размером шрифта:

Доступные стили крупных устройств на каждой платформе