Стилизация текста

Последнее обновление: 09.01.2021

Если мы работаем с текстом, то для стилизации его вывода мы можем использовать ряд свойств:

  • FontFamily: устанавливает применяемое семейство шрифтов

  • FontSize: устанавливает высоту шрифта

  • FontAttributes: устанавливает дополнительные визуальные эффекты шрифта - выделение жирным или курсивом

Для установки семейства используемых шрифтов свойству FontFamily в качестве значения передается название шрифта. Однако при установке шрифта надо учитывать, что данный шрифт должен поддерживаться на всех используемых платформах. Например, установка в коде:

Label header = new Label() { Text = "Xamarin Forms in Arial" };
header.FontFamily = "Arial";

Установка в XAML:

<Label Text="Xamarin Forms in Arial" FontFamily="Arial" />

Свойство FontSize

Для установки высоты шрифта используется значение типа double:

Label header = new Label() { Text = "Xamarin Forms" };
header.FontSize = 26;

Установка в XAML:

<Label Text="Xamarin Forms" FontSize="26" />

В то же время может возникнуть вопрос, какой лучше шрифт использовать на том или ином устройстве. Для этого в классе Device определен статический метод GetNamedSize(). Этот метод в качестве первого параметра требует одну из констант из перечисления NamedSize:

  • Default

  • Micro

  • Small

  • Medium

  • Large

  • Subtitle

  • Title

  • Body

  • Caption

  • Header

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

В качестве второго параметра передается тип элемента, для которого устанавливается шрифт:

Label header = new Label() { Text = "Привет из Xamarin Forms" };
this.Content = header;
header.FontSize = Device.GetNamedSize(NamedSize.Large, typeof(Label));

Установка в XAML:

<Label Text="Xamarin Forms" FontSize="Large" />

FontAttributes

FontAttributes позволяет выделить текст жирным или курсивом. Для этого он принимает значение из перечисления FontAttributes:

  • Bold: выделение жирным

  • Italic: выделение курсивом

Применение:

Label header = new Label() { Text = "Привет из Xamarin Forms" };
header.FontAttributes = FontAttributes.Bold;

В xaml:

<Label Text="Xaml в Xamarin" FontAttributes="Bold" />

Форматирование текста

Свойство Text элемента Label позволяет устанавливать простой текст, который мы можем стилизовать с помощью ранее рассмотренных свойств. Однако текст с каким-то более сложным форматированием так не задать. И для этого в элементе Label определено вспомогательное свойство FormattedText, которое допускает сложное форматирование.

Свойство FormattedText хранят не просто строку текста, а объект типа FormattedString, который инкапсулирует объекты типа Span. Каждый объект Span как раз и представляет кусок некоторым образом стилизованного текста. Для стилизации объекта Span применются все те же свойства:

  • Text

  • FontFamily

  • FontSize

  • FontAttributes

  • ForegroundColor

  • BackgroundColor

Например,создадим текст со сложынм форматированием в коде:

public class MainPage : ContentPage
{
    public MainPage()
    {
        Label header = new Label();
        this.Content = header;
		
        FormattedString formattedString = new FormattedString();
        formattedString.Spans.Add(new Span
        {
            Text = "Сегодня ",
            FontSize = Device.GetNamedSize(NamedSize.Large, typeof(Label))
        });
        formattedString.Spans.Add(new Span
        {
            Text = "хорошая",
            FontAttributes = FontAttributes.Bold
        });
        formattedString.Spans.Add(new Span
        {
            Text = " погода!",
            ForegroundColor=Color.Red
        });
        header.FormattedText = formattedString;
		
        header.VerticalTextAlignment = TextAlignment.Center;
        header.HorizontalTextAlignment = TextAlignment.Center;
    }
}

Аналогичный код в XAML:

<Label VerticalTextAlignment="Center" HorizontalTextAlignment="Center">
   <Label.FormattedText> 
     <FormattedString> 
       <Span Text="Сегодня " FontSize="Large" /> 
       <Span Text="хорошая " FontAttributes="Bold" /> 
       <Span Text="погода!" ForegroundColor="Red" />
     </FormattedString> 
   </Label.FormattedText>
</Label>
Форматирование текста в Xamarin Forms

Перевод строки

Для переноса текста на новую строку используется значение "\n". Например:

header.Text= "Его пример другим наука;\n"+
             "Но, боже мой, какая скука\n" +
             "С больным сидеть и день и ночь,\n" +
             "Не отходя ни шагу прочь!\n";
Перенос текста на новую строку в Xamarin Forms
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850