Пример #1
0
        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();
            };
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #5
0
        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);
        }
Пример #6
0
 public MyClickableSpan(HtmlLabel label, URLSpan span)
 {
     _label = label;
     _span  = span;
 }
 public FuckingSpannend(URLSpan span)
 {
     _span = span;
 }
Пример #8
0
        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);
        }