有没有办法在包含混合文本的标签中嵌入超链接?

问题描述 投票:0回答:1

我从 API 中获取一些文本,其中包含嵌入字符串响应中的超链接。例如:

This text is coming from an API. Click http://www.example.com to visit us.

文本可以在此传入文本中的任何位置包含一个或多个超链接。例如,另一个 API 调用可以返回如下内容:

Call from http://www.example.com. Please visit us at http://www.test.org to see the possibilities.

我将其显示在

Label
内。在这种情况下是否可以使链接可点击并在 WebView 中打开相应的链接?

如果不是

label
那么可以使用
span
来解析和构造带有
GestureRecognizers
的传入文本吗?

xamarin maui
1个回答
0
投票

在这种情况下是否可以使链接可点击并打开 WebView 中的相应链接?

是的,你可以参考官方文档:创建可复用的超链接类

在项目的根目录中创建一个

HyperlinkSpan
类:

public class HyperlinkSpan : Span
{
    public static readonly BindableProperty UrlProperty =
        BindableProperty.Create(nameof(Url), typeof(string), typeof(HyperlinkSpan), null);

    public string Url
    {
        get { return (string)GetValue(UrlProperty); }
        set { SetValue(UrlProperty, value); }
    }

    public HyperlinkSpan()
    {
        TextDecorations = TextDecorations.Underline;
        TextColor = Colors.Blue;
        GestureRecognizers.Add(new TapGestureRecognizer
        {
            // Launcher.OpenAsync is provided by Essentials.
            Command = new Command(async () => await Launcher.OpenAsync(Url))
        });
    }
}

将其添加到 MainPage.xaml:

<ContentPage ...
             xmlns:local="clr-namespace:MauiApp4"
             x:Class="MauiApp4.MainPage">
    <StackLayout>
        ...
        <Label>
            <Label.FormattedText>
                <FormattedString>
                    <Span Text="Alternatively, click " />
                    <local:HyperlinkSpan Text="here"
                                         Url="https://learn.microsoft.com/dotnet/" />
                    <Span Text=" to view .NET documentation." />
                </FormattedString>
            </Label.FormattedText>
        </Label>
    </StackLayout>
</ContentPage>

这是效果

© www.soinside.com 2019 - 2024. All rights reserved.