protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); //Set the view of the main layout SetContentView(Resource.Layout.activity_intro); // Setup toolbar SupportWidget.Toolbar toolbar = FindViewById <SupportWidget.Toolbar>(Resource.Id.toolbar); toolbar.Title = ""; SetSupportActionBar(toolbar); //create the ChestXRay AI model clickable TextView aboutTextView = FindViewById <TextView>(Resource.Id.txt_research_project); string modelName = GetString(Resource.String.intro_model_name); string researchProject = GetString(Resource.String.intro_research_project, modelName); SpannableString stringResearchProject = new SpannableString(researchProject); URLSpan clickableSpanChestXray = new URLSpan(SharedConstants.MLModelRepository); // Make modelName clickable int modelNameIndex = researchProject.IndexOf(modelName, StringComparison.CurrentCulture); stringResearchProject.SetSpan(clickableSpanChestXray, modelNameIndex, modelNameIndex + modelName.Length, SpanTypes.ExclusiveExclusive); aboutTextView.TextFormatted = stringResearchProject; aboutTextView.MovementMethod = new LinkMovementMethod(); FindViewById(Resource.Id.button_get_started).Click += delegate { ((MainApplication)this.Application).AppPrefManager.PassedIntroPage(); StartActivity(new Intent(this, typeof(ImageInput.ImageInputActivity))); Finish(); }; }
private void MakeLinkClickable(ISpannable strBuilder, URLSpan span) { var start = strBuilder.GetSpanStart(span); var end = strBuilder.GetSpanEnd(span); var flags = strBuilder.GetSpanFlags(span); var clickable = new MyClickableSpan((HtmlLabel)Element, span); strBuilder.SetSpan(clickable, start, end, flags); strBuilder.RemoveSpan(span); }
protected void MakeLinkClickable(SpannableStringBuilder strBuilder, URLSpan span) { var start = strBuilder.GetSpanStart(span); var end = strBuilder.GetSpanEnd(span); var flags = strBuilder.GetSpanFlags(span); var clickable = new MyClickableSpan((LabelHtml)Element, span); strBuilder.SetSpan(clickable, start, end, flags); strBuilder.RemoveSpan(span); }
private void MakeLinkClickable(SpannableStringBuilder strBuilder, URLSpan span) { var start = strBuilder.GetSpanStart(span); var end = strBuilder.GetSpanEnd(span); var flags = strBuilder.GetSpanFlags(span); ClickableSpan clickable = new FuckingSpannend(span); strBuilder.SetSpan(clickable, start, end, flags); strBuilder.RemoveSpan(span); }
private static void MakeLinkClickable(ISpannable spannable, URLSpan span) { var start = spannable.GetSpanStart(span); var end = spannable.GetSpanEnd(span); var flags = spannable.GetSpanFlags(span); var clickableLink = new ClickableLinkSpan(span.URL); spannable.SetSpan(clickableLink, start, end, flags); spannable.RemoveSpan(span); }
public MyClickableSpan(HtmlLabel label, URLSpan span) { _label = label; _span = span; }
public FuckingSpannend(URLSpan span) { _span = span; }
protected override void OnElementChanged(ElementChangedEventArgs <Label> e) { base.OnElementChanged(e); //Control?.SetText(labelText, TextView.BufferType.Spannable); var view = (HtmlLabel)Element; if (view == null || string.IsNullOrEmpty(view.Text)) { return; } #pragma warning disable 618 var labelText = (Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.N) ? Html.FromHtml(Element.Text, FromHtmlOptions.ModeLegacy) : Html.FromHtml(Element.Text); #pragma warning restore 618 TextView textView = new TextView(this.Context); textView.LayoutParameters = new LayoutParams(LayoutParams.WrapContent, LayoutParams.WrapContent); textView.SetTextColor(Xamarin.Forms.Color.Black.ToAndroid()); // Setting the auto link mask to capture all types of link-able data textView.AutoLinkMask = 0; // Make sure to set text after setting the mask //textView.Text = labelText; SpannableStringBuilder sb = new SpannableStringBuilder(labelText); Pattern pattern = Pattern.Compile("\\[\\[AS_[A-Za-z-]*\\]\\]"); //Linkify.AddLinks(textView, pattern, "taxon://",null,new TaxonTransformFilter()); Matcher m = pattern.Matcher(sb); int diff = 0; while (m.Find()) { var syn = TaxonSynonym.GetByPattern(m.Group(0)); if (syn != null) { int start = m.Start() + diff; int end = m.End() + diff; sb.Replace(start, end, syn.Text); var taxon = ((App)App.Current).Taxa.FirstOrDefault(i => i.TaxonId == syn.TaxonId && i.HasDiagnosis); if (taxon != null) { ClickableSpan cs = new URLSpan("taxonid://" + syn.TaxonId); sb.SetSpan(cs, start, start + syn.Text.Length, SpanTypes.InclusiveInclusive); } diff += syn.Text.Length - syn.Pattern.Length; } else { //if there is no TaxonSynonym at least hide the [[AS_...]] formating int start = m.Start() + diff; int end = m.End() + diff; sb.Replace(start, end, m.Group(0).Substring(5, m.Group(0).Length - 7)); diff += -7; } } textView.SetText(sb, TextView.BufferType.Spannable); textView.SetTextSize(ComplexUnitType.Dip, (float)view.FontSize); if (mm == null) { mm = new TaxonMovementMethod(); mm.LinkClicked += Mm_LinkClicked; } textView.MovementMethod = mm; SetNativeControl(textView); }