Xamarin Forms-共享屏幕,您可以共享“超链接”吗?

时间:2020-04-22 14:32:39

标签: xamarin.forms

我正在学习Xamarin Forms。特别是,如果我想共享一个复杂的链接,但文字是否简单,您该怎么做?我现在所拥有的如下。

await Share.RequestAsync(new ShareTextRequest
{
     Uri = "thelink",
     Title = "title", //ios doesn't use title
     Text = "extra text"
});

这显然只是放在链接和一些文本中。但我想要更类似于html超链接的内容。

2 个答案:

答案 0 :(得分:0)

好吧,如果您问如何在Xamarin表单中放置一个hiperlink,可以进行like this,只需在Portable项目中创建一个类,然后从您的XAML页面调用它,但请记住阅读{ {3}}文档,因为您需要将其放入info.plist:

<key>LSApplicationQueriesSchemes</key>
<array>
<string>lyft</string>  
<string>fb</string>
</array>

答案 1 :(得分:0)

如果您用{strong>超链接来表示Label,则可以查看此文档here

LabelSpan实例显示的文本可以变成超链接,示例代码如下:

<Label>
    <Label.FormattedText>
        <FormattedString>
            <Span Text="Alternatively, click " />
            <Span Text="here"
                  TextColor="Blue"
                  TextDecorations="Underline">
                <Span.GestureRecognizers>
                    <TapGestureRecognizer Command="{Binding TapCommand}"
                                          CommandParameter="https://docs.microsoft.com/xamarin/" />
                </Span.GestureRecognizers>
            </Span>
            <Span Text=" to view Xamarin documentation." />
        </FormattedString>
    </Label.FormattedText>
</Label>

点击超链接后,TapGestureRecognizer将通过执行其Command属性定义的ICommand进行响应。另外,由CommandParameter属性指定的URL将作为参数传递给ICommand

XAML页面的代码包含TapCommand实现:

public partial class MainPage : ContentPage
{
    // Launcher.OpenAsync is provided by Xamarin.Essentials.
    public ICommand TapCommand => new Command<string>(async (url) => await Launcher.OpenAsync(url));

    public MainPage()
    {
        InitializeComponent();
        BindingContext = this;
    }
}

效果:

enter image description here

此外,您还可以创建a reusable hyperlink class来使xaml代码更具示例性。