在xamarin中检测电话号码和链接,表单

goqiplq2  于 2023-08-01  发布在  其他
关注(0)|答案(3)|浏览(140)

假设我们有以下文本:
联系我们015546889或email@hotmail.com
如何在xamarin中显示上述文本。表单中的相同标签,并通过发送电子邮件处理单击电子邮件,并通过单击号码处理电话呼叫。
我可以用下面的代码来制作可点击的标签

Label label = new Label;
     label.GestureRecognizers.Add(new TapGestureRecognizer()
    {
         Command = new Command(() => {
           //do some function here
        })
   });

字符串
如何超链接相同的消息传递应用程序或WhatsApp应用程序

5hcedyr0

5hcedyr01#

经过大量的搜索,我找到了完美的解决方案在这里:
https://theconfuzedsourcecode.wordpress.com/tag/xamarin-hyperlink-label/
希望这对其他人有帮助:)

3lxsmp7m

3lxsmp7m2#

查看Forms9Patch中的Label元素。它有一个允许简单标记的HtmlText属性。

using System;
using Xamarin.Forms;
namespace Forms9PatchDemo
{
    public class LabelLink : ContentPage
    {
        public LabelLink()
        {
            var label = new Forms9Patch.Label
            {
                HtmlText = "Contact us on <a id=\"phone\" href=\"tel:+353015546889\">015546889</a> or <a id=\"email\" href=\"mailto:email@hotmail.com\">email@hotmail.com</a>"
            };
            label.ActionTagTapped += (object sender, Forms9Patch.ActionTagEventArgs e) =>
            {
                var id = e.Id;
                var href = e.Href;
                var uri = new Uri(e.Href);
                Device.OpenUri(uri);
            };
            Content = new StackLayout
            {
                VerticalOptions = LayoutOptions.Center,
                Children = {
                    new Label { Text = "Forms9Patch.Label.HtmlText <a> example" },
                    new BoxView { BackgroundColor = Color.Black, HeightRequest = 1 },
                    label
                }
            };
        }
    }
}

字符串
请注意,上面的示例在iOS模拟器上不起作用,因为不支持tel:mailto:方案。它可以在实际的iOS设备上运行。

qlzsbp2j

qlzsbp2j3#

和AAHN一样的回答,https://theconfuzedsourcecode.wordpress.com/tag/xamarin-hyperlink-label/,但是我没有足够的声誉来评论他的回答。
只是android部分的一个改进,而不是覆盖OnElementChanged,覆盖CreateNativeControl,这样你就可以在那里添加掩码,这使得更容易获得正确的xamarin.forms部分的样式,因为你没有覆盖它们。

public class HyperLinkLabelRenderer : LabelRenderer
{
    private Context _context;
    public HyperLinkLabelRenderer(Context context) : base(context)
    {
        _context = context;
    }

    protected override TextView CreateNativeControl()
    {
        var view = base.CreateNativeControl();
        view.AutoLinkMask = MatchOptions.All;
        return view;
    }
}

字符串

相关问题