package Ġcom . kick starter . ui . extensions Ċ Ċ import Ġandroid . text . Editable Ċ import Ġandroid . text . Selection Ċ import Ġandroid . text . Sp ann able Ċ import Ġandroid . text . Sp ann able String Ċ import Ġandroid . text . Sp anned Ċ import Ġandroid . text . Text Paint Ċ import Ġandroid . text . Text Watcher Ċ import Ġandroid . text . method . Link Movement Method Ċ import Ġandroid . text . style . Clickable Span Ċ import Ġandroid . text . style . URL Span Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . annotation . Color Res Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġorg . js oup . J soup Ċ import Ġjava . util . Locale Ċ Ċ fun ĠTextView . make Links ( var arg Ġlinks : ĠPair < String , ĠView . OnClickListener >, Ġ@ Color Res Ġlink Color : ĠInt Ġ= Ġ- 1 , Ġis Underline Text : ĠBoolean Ġ= Ġtrue ) Ġ{ ĊĠĠĠ Ġval Ġsp ann able String Ġ= ĠSp ann able String ( this . text ) ĊĠĠĠ Ġvar Ġstart IndexOf Link Ġ= Ġ- 1 ĊĠĠĠ Ġfor Ġ( link Ġin Ġlinks ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġclick able Span Ġ= Ġobject Ġ: ĠClick able Span () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġupdate Draw State ( text Paint : ĠText Paint ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Paint . is Underline Text Ġ= Ġis Underline Text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( link Color Ġ!= Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Paint . color Ġ= ĠContext Compat . getColor ( context , Ġlink Color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonClick ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSelection . setSelection (( view Ġas ĠTextView ). text Ġas ĠSp ann able , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . invalidate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlink . second . onClick ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġstart IndexOf Link Ġ= Ġthis . text . toString (). toLowerCase ( Locale . getDefault ()). indexOf ( link . first . toLowerCase ( Locale . getDefault ()), Ġstart IndexOf Link Ġ+ Ġ 1 ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( start IndexOf Link Ġ== Ġ- 1 ) Ġcontinue Ġ// Ġtodo Ġif Ġyou Ġwant Ġto Ġverify Ġyour Ġtexts Ġcontains Ġlinks Ġtext ĊĊĠĠĠĠĠĠĠ Ġsp ann able String . set Span ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclick able Span , Ġstart IndexOf Link , Ġstart IndexOf Link Ġ+ Ġlink . first . length , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSp anned . SPAN _ EXCL USIVE _ EXCL USIVE ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġthis . setText ( span nable String , ĠTextView . Buffer Type . SPAN N ABLE ) ĊĠĠĠ Ġthis . movement Method Ġ= ĊĠĠĠĠĠĠĠ ĠLink Movement Method . getInstance () Ġ// Ġwithout ĠLink Movement Method , Ġlink Ġcan Ġnot Ġclick ĊĠĠĠ Ġthis . links Clickable Ġ= Ġtrue Ċ } Ċ Ċ /** Ċ Parse ĠHTML Ġinto Ġa ĠDocument . ĠAs Ġno Ġbase ĠURI Ġis Ġspecified , Ġabsolute ĠURL Ġdetection Ġrelies Ġon Ġthe ĠHTML Ġincluding Ġa Ċ {@ code Ġ< base Ġhref >} Ġtag . Ċ Ċ @ see Ġ# J soup . parse ( String ) Ċ Ġ*/ Ċ fun ĠTextView . parse Html Tag () Ġ{ ĊĠĠĠ Ġthis . text Ġ= ĠJ soup . parse ( this . text . toString ()). text () Ċ } Ċ Ċ fun ĠTextView . url Span Without Under lines () Ġ{ ĊĠĠĠ Ġval Ġsp ann able : ĠSp ann able Ġ= ĠSp ann able String ( this . text ) ĊĠĠĠ Ġsp ann able . get Spans ( 0 , Ġsp ann able . length , ĠURL Span :: class . java ). forEach Ġ{ Ġspan Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġstart Ġ= Ġsp ann able . get Span Start ( span ) ĊĠĠĠĠĠĠĠ Ġval Ġend Ġ= Ġsp ann able . get Span End ( span ) ĊĠĠĠĠĠĠĠ Ġsp ann able . remove Span ( span ) ĊĠĠĠĠĠĠĠ Ġval Ġnew Span Ġ= Ġobject Ġ: ĠURL Span ( span . url ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġupdate Draw State ( ds : ĠText Paint ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . update Draw State ( ds ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġds . is Underline Text Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsp ann able . set Span ( new Span , Ġstart , Ġend , Ġ 0 ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġtext Ġ= Ġsp ann able Ċ } Ċ Ċ fun ĠTextView . get Updated Text () Ġ{ ĊĠĠĠ Ġthis . add TextChanged Listener ( object Ġ: ĠText Watcher Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence , Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO ĠAuto - generated Ġmethod Ġstub ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs : ĠCharSequence , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġafter : ĠInt ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO ĠAuto - generated Ġmethod Ġstub ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO ĠAuto - generated Ġmethod Ġstub ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) Ċ } Ċ