Как добавить форматированный текст или HTML в метку или текстовое поле в формах Xamarin?

#c# #xamarin #xamarin.forms #label

Вопрос:

Я хочу добавить форматированный текст или форматированный текст в Label любое текстовое поле в моем проекте Xamarin Forms. Я пробовал использовать отдельные метки для текста , а также использовать WebView и т. Д. Но ни один из них не сработал. Использование a Webview как-то работало, но его нужно было обновлять каждый раз, когда содержимое менялось. Для использования AJAX с WebView потребуется веб-сервер, поэтому он не может работать локально/автономно.

Я просто хочу добавить форматированный текст Label в режиме только для чтения или его можно изменить из кода во время выполнения.

Ответ №1:

Есть в основном 2 способа сделать это.

1] Вы можете использовать Span свойство a Label для ввода форматированного текста внутри Label точно так же, как:

 <Label>
    <Label.FormattedText>
        <FormattedString>
            <Span Text="This is a " FontSize="15" TextColor="Blue"/>
            <Span Text="Rich Text" FontSize="30" TextColor="Red"/>
            <Span Text=" inside a Label in Xamarin Forms" FontSize="15" TextColor="Blue" />
        </FormattedString>
    </Label.FormattedText>
</Label>
 

Вы также можете использовать Binding Span любой стиль и другие свойства Label inside Span .


2] Второй метод заключается в том, чтобы использовать TextType свойство Label и установить для него значение TextType="Html" . Но, пожалуйста, обратите внимание, что Label TextType="Html" поддерживаемые HTML-теги ограничены в зависимости от базовой платформы, на которой работает приложение.

Мы можем определить HTML в коде C# или непосредственно в XAML.

Внутри кода C# за:

 Label richTextLabel = new Label
{
    Text = "This is <strong style="color:red">HTML</strong> text.",
    TextType = TextType.Html
};

// OR 
richTextLabel.Text = "This is <strong style="color:red">HTML</strong> text."
richTextLabel.TextType = TextType.Html;
// In XAML set Label Name as <Label x:Name="richTextLabel" />
 

В XAML

 <Label Text="This is amp;<strong style=amp;quot;color:redamp;quot;amp;>HTMLamp;</strongamp;> text."
       TextType="Html"  />

<!--The symbols <, >, " needs to be escaped -->
 

RE: Обратитесь к этому для получения дополнительной документации.

Вывод: Использование первого метода Span намного надежнее, так как все будет отображаться в виде кода. Во втором методе большая часть HTML-разметки не поддерживается Label на разных базовых платформах. Следовательно, рекомендуется первый метод.