Xamarin.Forms在文本

时间:2017-01-23 19:30:44

标签: c# xaml xamarin xamarin.forms

我要求我提供一个显示一些文字的对话框。在本文中,可能有也可能没有电话号码。 我有识别这些电话号码的正则表达式,所以我知道它们在哪里。

我不知道有任何解决方案可以提供用户点击电话号码并执行操作的方式(该操作将启动手机应用程序,我已经有代码)。

您似乎无法格式化标签或编辑器的某些部分,也无法嵌入超链接。

如果我想保留文本格式(不要破坏它)除了处理整个标签上的点击之外我别无选择吗?

我唯一的另一个想法是获取文本,解析电话号码,并动态创建多个标签,每个电话号码都是它自己的单独标签,我可以将其格式化为粗体并提供轻击手势动作。这个问题是格式化。

还有其他我没有看到的解决方案吗?

1 个答案:

答案 0 :(得分:0)

由于Gusman的评论建议,我找到了使用WebView的解决方案。 我用html锚点替换文本中的电话号码

555.555.5555 - &gt; <a href='555.555.5555'>555.555.5555></a>

然后,我处理OnNavigating事件,取消请求,然后使用从网址获取的电话号码打开手机。

web视图:

<WebView x:Name="EmergencyContactInfoWebView" HorizontalOptions="Center" HeightRequest="150" Navigating="OnNavigating">
</WebView>

OnNavigtaing事件处理程序:

protected void OnNavigating(object sender, WebNavigatingEventArgs e)
{
    e.Cancel = true; //cancel request
    int separatorIdx = e.Url.LastIndexOf('/');
    string phoneNumber = e.Url.Substring(separatorIdx+1); //parse phone number href from url
    var phoneDialer = CrossMessaging.Current.PhoneDialer;
    if (phoneDialer.CanMakePhoneCall)
    {
        phoneDialer.MakePhoneCall(phoneNumber); //make the call (using a xamarin forms plugin)
    }
}