Если мы работаем с текстом, то для стилизации его вывода мы можем использовать ряд свойств:
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" />
Для установки высоты шрифта используется значение типа 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:
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>
Для переноса текста на новую строку используется значение "\n". Например:
header.Text= "Его пример другим наука;\n"+ "Но, боже мой, какая скука\n" + "С больным сидеть и день и ночь,\n" + "Не отходя ни шагу прочь!\n";