gpt4 book ai didi

c# - 自定义标签中的 Xamarin 可点击子字符串

转载 作者:太空宇宙 更新时间:2023-11-03 20:57:58 26 4
gpt4 key购买 nike

我正在努力做到这一点,以便用户可以单击标签中的某个子字符串,它会运行一个方法,例如单击 #hashtag 将运行 OpenHashtag(string hashtag然后单击 @taggedUser 将运行 ViewProfile(taggedUser)

我找到了 this教程,除了我不希望电话号码或 URL 可点击,只有主题标签和标记的用户。

这些是它使用的渲染

安卓

[assembly: ExportRenderer(typeof(BodyLabel), typeof(BodyLabelAndroid))]
namespace SocialNetwork.Droid.Renderers
{
public class BodyLabelAndroid : LabelRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
{
base.OnElementChanged(e);

var view = (BodyLabel)Element;
if (view == null) return;

TextView textView = new TextView(Forms.Context);
textView.LayoutParameters = new LayoutParams(LayoutParams.WrapContent, LayoutParams.WrapContent);
textView.SetTextColor(view.TextColor.ToAndroid());

// Setting the auto link mask to capture all types of link-able data
textView.AutoLinkMask = MatchOptions.All;
// Make sure to set text after setting the mask
textView.Text = view.Text;
textView.SetTextSize(ComplexUnitType.Dip, (float)view.FontSize);

// overriding Xamarin Forms Label and replace with our native control
SetNativeControl(textView);
}
}
}

iOS

[assembly: ExportRenderer(typeof(BodyLabel), typeof(BodyLabeliOS))]
namespace SocialNetwork.iOS.Renderers
{
public class BodyLabeliOS : ViewRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<View> e)
{
base.OnElementChanged(e);

var view = (AwesomeHyperLinkLabel)Element;
if (view == null) return;

UITextView uilabelleftside = new UITextView(new CGRect(0, 0, view.Width, view.Height));
uilabelleftside.Text = view.Text;
uilabelleftside.Font = UIFont.SystemFontOfSize((float)view.FontSize);
uilabelleftside.Editable = false;

uilabelleftside.DataDetectorTypes = UIDataDetectorType.All;
uilabelleftside.BackgroundColor = UIColor.Clear;

SetNativeControl(uilabelleftside);
}
}
}

最佳答案

安卓:

而不是使用 textView.AutoLinkMask = MatchOptions.All您可以使用 Linkify.AddLinks方法。定义您的正则表达式(例如,任何以 # 或 @ 开头的词),它将起作用。

但在 iOS 上,我认为它更复杂。我看到两个选项:

  1. 使用 WebView 。解析您的字符串并添加 "<a href"在需要的地方。
  2. 将您的文本分成几部分,并为每个可点击的部分添加单独的标签。如果您只想单击主题标签和标记的用户,您可以在文本下方添加适当的标签。之后,您可以添加点击手势识别器来处理点击。

关于c# - 自定义标签中的 Xamarin 可点击子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48484654/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com