package Ġcom . cr az yle g end . kotlin extensions . views Ċ Ċ import Ġandroid . animation . Object Animator Ċ import Ġandroid . animation . Value Animator Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Paint Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . graphics . Type face Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . os . Build Ċ import Ġandroid . text .* Ċ import Ġandroid . text . method . Link Movement Method Ċ import Ġandroid . text . style . ForegroundColor Span Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . animation . Accel erate De cel erate Interpolator Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . annotation .* Ċ import Ġandroidx . appcompat . widget . AppCompat TextView Ċ import Ġandroidx . core . animation . do On End Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . core . text . Pre computed Text Compat Ċ import Ġandroidx . core . widget . TextView Compat Ċ import Ġandroidx . vect ord raw able . graphics . drawable . Argb Evaluator Ċ import Ġcom . cr az yle g end . kotlin extensions . context . getColor Compat Ċ import Ġcom . cr az yle g end . kotlin extensions . context . getFont Compat Ċ import Ġcom . google . android . material . text field . TextInput Layout ĊĊ Ċ /** Ċ Ġ* ĠCreated Ġby Ġh rist ij an Ġon Ġ 2 / 2 2 / 1 9 Ġto Ġlong Ġlive Ġand Ġpro sper Ġ! Ċ Ġ*/ Ċ Ċ /** Ċ Ġ* ĠUnder Line Ġthe ĠTextView . Ċ Ġ*/ Ċ fun ĠTextView . under Line () Ġ{ ĊĠĠĠ Ġpaint . flags Ġ= Ġpaint . flags Ġor ĠPaint . UNDER LINE _ TEXT _ FLAG ĊĠĠĠ Ġpaint . is Anti Alias Ġ= Ġtrue Ċ } Ċ Ċ /** Ċ Ġ* ĠDelete Line Ġfor Ġa ĠTextView . Ċ Ġ*/ Ċ fun ĠTextView . delete Line () Ġ{ ĊĠĠĠ Ġpaint . flags Ġ= Ġpaint . flags Ġor ĠPaint . STRI KE _ TH RU _ TEXT _ FLAG ĊĠĠĠ Ġpaint . is Anti Alias Ġ= Ġtrue Ċ } ĊĊ Ċ /** Ċ Ġ* ĠRemoves Ġthe Ġbold ing Ġof Ġa Ġtext Ġview Ċ Ġ*/ Ċ fun ĠTextView . un Bold () Ġ{ ĊĠĠĠ Ġset Type face ( null , ĠType face . NORMAL ) Ċ } Ċ Ċ fun ĠTextView . normal () Ġ{ ĊĠĠĠ Ġset Type face ( null , ĠType face . NORMAL ) Ċ } ĊĊ Ċ fun ĠTextView . set Ap per e ance ( res Id : ĠInt ) Ġ= Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠ Ġset TextAppearance ( res Id ) Ċ } Ġelse Ġ{ ĊĠĠĠ Ġ@ Suppress (" DE PREC ATION ") Ġset TextAppearance ( context , Ġres Id ) Ċ } ĊĊ Ċ /** Ċ Ġ* ĠB old Ġthe ĠTextView . Ċ Ġ*/ Ċ fun ĠTextView . bold () Ġ{ ĊĠĠĠ Ġset Type face ( null , ĠType face . BOLD ) Ċ } Ċ Ċ fun ĠTextView . bold Italic () Ġ{ ĊĠĠĠ Ġset Type face ( null , ĠType face . BOLD _ ITAL IC ) Ċ } ĊĊ Ċ fun ĠTextView . italic () Ġ{ ĊĠĠĠ Ġset Type face ( null , ĠType face . ITAL IC ) Ċ } ĊĊĊĊ Ċ /** Ċ Ġ* ĠSet Ġfont Ġfor ĠTextView . Ċ Ġ*/ Ċ fun ĠTextView . font ( font : ĠString ) Ġ{ ĊĠĠĠ Ġtype face Ġ= ĠType face . createFrom Asset ( context . assets , Ġ" fonts /$ font . ttf ") Ċ } ĊĊ Ċ /** Ċ Ġ* ĠSet Ġdifferent Ġcolor Ġfor Ġsubstring ĠTextView . Ċ Ġ*/ Ċ fun ĠTextView . setColor Of Substring ( substring : ĠString , Ġcolor : ĠInt ) Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsp ann able Ġ= Ġandroid . text . Sp ann able String ( text ) ĊĠĠĠĠĠĠĠ Ġval Ġstart Ġ= Ġtext . indexOf ( substring ) ĊĠĠĠĠĠĠĠ Ġsp ann able . set Span ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFore ground Color Span ( Context Compat . getColor ( context , Ġcolor )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ+ Ġsubstring . length , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSp ann able . SPAN _ EXCL USIVE _ EXCL USIVE ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġsp ann able ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d (" View Extensions ", Ġ" exception Ġin Ġset Color Of Substring , Ġtext =$ text , Ġsubstring =$ substring ", Ġe ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠSet Ġa Ġdrawable Ġto Ġthe Ġleft Ġof Ġa ĠTextView . Ċ Ġ*/ Ċ fun ĠTextView . set Drawable Left ( drawable : ĠInt ) Ġ{ ĊĠĠĠ Ġthis . set Compound Draw ables With Intr insic Bounds ( drawable , Ġ 0 , Ġ 0 , Ġ 0 ) Ċ } Ċ Ċ /** Ċ Ġ* ĠSet Ġa Ġdrawable Ġto Ġthe Ġtop Ġof Ġa ĠTextView . Ċ Ġ*/ Ċ fun ĠTextView . set Drawable Top ( drawable : ĠInt ) Ġ{ ĊĠĠĠ Ġthis . set Compound Draw ables With Intr insic Bounds ( 0 , Ġdrawable , Ġ 0 , Ġ 0 ) Ċ } ĊĊ Ċ /** Ċ Ġ* ĠSet Ġa Ġdrawable Ġto Ġthe Ġright Ġof Ġa ĠTextView . Ċ Ġ*/ Ċ fun ĠTextView . set Drawable Right ( drawable : ĠInt ) Ġ{ ĊĠĠĠ Ġthis . set Compound Draw ables With Intr insic Bounds ( 0 , Ġ 0 , Ġdrawable , Ġ 0 ) Ċ } Ċ Ċ /** Ċ Ġ* ĠSet Ġa Ġdrawable Ġto Ġthe Ġbottom Ġof Ġa ĠTextView . Ċ Ġ*/ Ċ fun ĠTextView . set Drawable Bottom ( drawable : ĠInt ) Ġ{ ĊĠĠĠ Ġthis . set Compound Draw ables With Intr insic Bounds ( 0 , Ġ 0 , Ġ 0 , Ġdrawable ) Ċ } ĊĊ Ċ fun ĠTextView . size Span ( str : ĠString , Ġrange : ĠInt Range , Ġscale : ĠFloat Ġ= Ġ 1 . 5 f ) Ġ{ ĊĠĠĠ Ġtext Ġ= Ġstr . to Size Span ( range , Ġscale ) Ċ } ĊĊ Ċ fun ĠTextView . color Span ( str : ĠString , Ġrange : ĠInt Range , Ġcolor : ĠInt Ġ= ĠColor . RED ) Ġ{ ĊĠĠĠ Ġtext Ġ= Ġstr . to Color Span ( range , Ġcolor ) Ċ } ĊĊ Ċ fun ĠTextView . backgroundColor Span ( str : ĠString , Ġrange : ĠInt Range , Ġcolor : ĠInt Ġ= ĠColor . RED ) Ġ{ ĊĠĠĠ Ġtext Ġ= Ġstr . to BackgroundColor Span ( range , Ġcolor ) Ċ } Ċ Ċ fun ĠTextView . strike Th ro ug th Span ( str : ĠString , Ġrange : ĠInt Range ) Ġ{ ĊĠĠĠ Ġtext Ġ= Ġstr . to Stri ke Through Span ( range ) Ċ } Ċ Ċ fun ĠTextView . click Span ( ĊĠĠĠĠĠĠĠ Ġstr : ĠString , Ġrange : ĠInt Range , ĊĠĠĠĠĠĠĠ Ġcolor : ĠInt Ġ= ĠColor . RED , Ġis Underline Text : ĠBoolean Ġ= Ġfalse , Ġclick Listener : ĠView . OnClickListener Ċ ) Ġ{ ĊĠĠĠ Ġmovement Method Ġ= ĠLink Movement Method . getInstance () ĊĠĠĠ Ġhighlight Color Ġ= ĠColor . TRANSP ARENT Ġ Ġ// Ġremove Ġclick Ġbg Ġcolor ĊĠĠĠ Ġtext Ġ= Ġstr . to Click Span ( range , Ġcolor , Ġis Underline Text , Ġclick Listener ) Ċ } ĊĊ Ċ /** Ċ Ġ* ĠSet ĠTextView Ġfrom ĠHtml Ċ Ġ*/ Ċ fun ĠTextView . setText From Html ( html : ĠString ) Ġ{ ĊĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . N ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . text Ġ= ĠHtml . from Html ( html , ĠHtml . FROM _ HTML _ MODE _ LEG ACY ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠĠĠĠĠ Ġthis . text Ġ= ĠHtml . from Html ( html ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠSets Ġgiven Ġcontent Ġto ĠTextView Ġor Ġhide s Ġit . Ċ Ġ*/ Ċ fun ĠTextView . set As Content ( content : ĠCharSequence ?) Ġ{ ĊĠĠĠ Ġif Ġ(! TextUtils . isEmpty ( content )) Ġ{ ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġcontent ĊĠĠĠĠĠĠĠ Ġvisibility Ġ= ĠView . VISIBLE ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġvisibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} Ċ } Ċ Ċ inline Ġvar ĠTextView . is Selectable : ĠBoolean ĊĠĠĠ Ġget () Ġ= Ġis Text Selectable ĊĠĠĠ Ġset ( value ) Ġ= Ġset Text Is Selectable ( value ) ĊĊ Ċ fun ĠTextView . update TextAppearance (@ Style Res Ġresource : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠ ĠTextView Compat . setText Appearance ( this , Ġresource ) Ċ Ċ @ Suppress Lint (" Restricted Api ") Ċ fun ĠTextView . textColor Anim ( from : ĠInt , Ġto : ĠInt ) Ġ{ ĊĠĠĠ Ġval ĠtextColor Animator Ġ= ĠObject Animator . of Object ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" textColor ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠArg b Evaluator (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor ( context , Ġfrom ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor ( context , Ġto ) ĊĠĠĠ Ġ) ĊĠĠĠ ĠtextColor Animator . duration Ġ= Ġ 3 0 0 ĊĠĠĠ ĠtextColor Animator . start () Ċ } ĊĊ Ċ fun ĠTextView . pre Compute Current Text () Ġ{ ĊĠĠĠ Ġval Ġtext Params Ġ= ĠTextView Compat . getText Metrics Params ( this ) ĊĠĠĠ Ġval Ġtext Ġ= ĠPre computed Text Compat . create ( text , Ġtext Params ) ĊĠĠĠ Ġthis . text Ġ= Ġtext Ċ } Ċ Ċ @ Worker Thread Ċ fun ĠTextView . pre compute Sp ann able Text ( text : ĠSp ann able ): ĠPre computed Text Compat Ġ{ ĊĠĠĠ Ġval Ġtext Params Ġ= ĠTextView Compat . getText Metrics Params ( this ) ĊĠĠĠ Ġreturn ĠPre computed Text Compat . create ( text , Ġtext Params ) Ċ } Ċ Ċ @ Worker Thread Ċ fun ĠTextView . pre compute Text ( text : ĠString ): ĠPre computed Text Compat Ġ{ ĊĠĠĠ Ġval Ġtext Params Ġ= ĠTextView Compat . getText Metrics Params ( this ) ĊĠĠĠ Ġreturn ĠPre computed Text Compat . create ( text , Ġtext Params ) Ċ } ĊĊ Ċ inline Ġfun ĠTextView . add TextChanged Listener ( ĊĠĠĠĠĠĠĠ Ġcross inline Ġon Before TextChanged : Ġ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġcount : ĠInt , Ġafter : ĠInt ) Ġ-> ĠUnit Ġ= Ġ{ Ġ_, Ġ_, Ġ_, Ġ_ Ġ-> Ġ}, ĊĠĠĠĠĠĠĠ Ġcross inline Ġon TextChanged : Ġ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ-> ĠUnit Ġ= Ġ{ Ġ_, Ġ_, Ġ_, Ġ_ Ġ-> Ġ}, ĊĠĠĠĠĠĠĠ Ġcross inline Ġon After TextChanged : Ġ( s : ĠEdit able ) Ġ-> ĠUnit Ġ= Ġ{ Ġ} Ċ ): ĠText Watcher Ġ{ ĊĠĠĠ Ġval Ġlistener Ġ= Ġobject Ġ: ĠText Watcher Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon TextChanged ( s , Ġstart , Ġbefore , Ġcount ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ) Ġ= Ġon After TextChanged ( s ) ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs : ĠCharSequence ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġafter : ĠInt ĊĠĠĠĠĠĠĠ Ġ) Ġ= Ġon Before TextChanged ( s , Ġstart , Ġcount , Ġafter ) ĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġadd TextChanged Listener ( listener ) ĊĠĠĠ Ġreturn Ġlistener Ċ } Ċ Ċ infix Ġfun ĠTextView . set (@ String Res Ġid : ĠInt ) Ġ{ ĊĠĠĠ Ġset Text ( id ) Ċ } Ċ Ċ infix Ġfun ĠTextView . set ( text : ĠString ?) Ġ{ ĊĠĠĠ Ġset Text ( text ) Ċ } Ċ Ċ infix Ġfun ĠTextView . set ( text : ĠSp ann able ?) Ġ{ ĊĠĠĠ Ġset Text ( text ) Ċ } ĊĊ Ċ infix Ġfun ĠAppCompat TextView . set ( text : ĠString ?) Ġ{ ĊĠĠĠ Ġset Pre computed Text ( text ) Ċ } ĊĊ Ċ fun ĠText Input Layout . clear Error () Ġ{ ĊĠĠĠ Ġerror Ġ= Ġnull ĊĠĠĠ Ġis Error Enabled Ġ= Ġfalse Ċ } Ċ Ċ val ĠTextView . text String : ĠString ĊĠĠĠ Ġget () Ġ= Ġtext . toString () ĊĊ Ċ val ĠAppCompat TextView . text String : ĠString ĊĠĠĠ Ġget () Ġ= Ġtext . toString () ĊĊ Ċ fun ĠTextView . setTextColor Id ( id : ĠInt ) Ġ{ ĊĠĠĠ Ġthis . setTextColor ( this . context . getColor Compat ( id )) Ċ } Ċ Ċ fun ĠTextView . set Right Drawable (@ Drawable Res Ġres Id : ĠInt ) Ġ{ ĊĠĠĠ Ġset Compound Draw ables With Intr insic Bounds ( 0 , Ġ 0 , Ġres Id , Ġ 0 ) Ċ } Ċ Ċ fun ĠTextView . setFont (@ Font Res Ġfont : ĠInt ) Ġ{ ĊĠĠĠ Ġthis . type face Ġ= Ġcontext . getFont Compat ( font ) Ċ } Ċ Ċ fun ĠTextView . setFont ( type face : ĠType face ?) Ġ{ ĊĠĠĠ Ġthis . type face Ġ= Ġtype face Ċ } ĊĊ Ċ fun ĠTextView . add Text Listener ( ĊĠĠĠĠĠĠĠ Ġbefore Changed : Ġ(( s : ĠCharSequence ) Ġ-> ĠUnit )? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ ĠonChanged : Ġ(( s : ĠCharSequence ) Ġ-> ĠUnit )? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġafter Changed : Ġ(( s : ĠEdit able ) Ġ-> ĠUnit )? Ġ= Ġnull Ċ ) Ġ{ ĊĠĠĠ Ġadd De bounce Text Listener ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdebounce TimeIn Millis Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbefore Changed Ġ= Ġbefore Changed , ĠonChanged Ġ= ĠonChanged , Ġafter Changed Ġ= Ġafter Changed ĊĠĠĠ Ġ) Ċ } Ċ Ċ fun ĠTextView . add De bounce Text Listener ( ĊĠĠĠĠĠĠĠ Ġdebounce TimeIn Millis : ĠLong Ġ= Ġ 5 0 0 , ĊĠĠĠĠĠĠĠ Ġbefore Changed : Ġ(( s : ĠCharSequence ) Ġ-> ĠUnit )? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġafter Changed : Ġ(( s : ĠEdit able ) Ġ-> ĠUnit )? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ ĠonChanged : Ġ(( s : ĠCharSequence ) Ġ-> ĠUnit )? Ġ= Ġnull Ċ ) Ġ{ ĊĠĠĠ Ġadd TextChanged Listener ( object Ġ: ĠText Watcher Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġchanged Runnable : ĠRunnable Ġ= ĠRunnable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonChanged ?. invoke ( text ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġafter Changed ?. invoke ( s ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( s : ĠCharSequence , Ġstart : ĠInt , Ġcount : ĠInt , Ġafter : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbefore Changed ?. invoke ( s ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence , Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( on Changed Ġ== Ġnull ) Ġreturn ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( de bounce TimeIn Millis Ġ<= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonChanged . invoke ( s ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġremove Callbacks ( changed Runnable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost Delayed ( changed Runnable , Ġdebounce TimeIn Millis ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) Ċ } Ċ Ċ fun ĠTextView . add De bounce Change State Listener ( delay In Millis : ĠLong Ġ= Ġ 5 0 0 , Ġtimeout In Millis : ĠLong Ġ= Ġ 0 , Ġlistener : Ġ( Boolean ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġadd TextChanged Listener ( object Ġ: ĠText Watcher Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġstart : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġrunnable : ĠRunnable Ġ= ĠRunnable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremove Callbacks ( timeout Runnable ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtimeout Runnable : ĠRunnable Ġ= Ġobject Ġ: ĠRunnable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Delayed ( this , Ġtimeout In Millis ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// nothing ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( s : ĠCharSequence , Ġstart : ĠInt , Ġcount : ĠInt , Ġafter : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// nothing ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence , Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! this . start ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . start Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Delayed ( timeout Runnable , Ġtimeout In Millis ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( s . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . start Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove Callbacks ( timeout Runnable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremove Callbacks ( run nable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost Delayed ( run nable , Ġdelay In Millis ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) Ċ } ĊĊ Ċ fun ĠAppCompat TextView . set Pre computed Text ( text : ĠString ?) Ġ{ ĊĠĠĠ Ġtext ?. let Ġ{ ĊĠĠĠĠĠĠĠ Ġset Text Future ( Pre computed Text Compat . getText Future ( it , Ġthis . text Metrics Params Compat , Ġnull )) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠAppCompat TextView . set Pre computed Text Or Hide ( text : ĠString ?) Ġ{ ĊĠĠĠ Ġif Ġ( text Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġgone () ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġvisible () ĊĠĠĠĠĠĠĠ Ġset Pre computed Text ( text ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠTextView . setText Stri ke Th ru ( strike Th ru : ĠBoolean ) Ġ{ ĊĠĠĠ Ġif Ġ( strike Th ru ) Ġset Text Stri ke Th ru () Ġelse Ġset Text Not Stri ke Th ru () Ċ } Ċ Ċ fun ĠTextView . setText Stri ke Th ru () Ġ{ ĊĠĠĠ Ġpaint Flags Ġ= Ġpaint Flags Ġor ĠPaint . STRI KE _ TH RU _ TEXT _ FLAG Ċ } Ċ Ċ fun ĠTextView . setText Not Stri ke Th ru () Ġ{ ĊĠĠĠ Ġpaint Flags Ġ= Ġpaint Flags Ġand ĠPaint . STRI KE _ TH RU _ TEXT _ FLAG . inv () Ċ } Ċ Ċ fun ĠTextView . setText Under lined ( under lined : ĠBoolean ) Ġ{ ĊĠĠĠ Ġif Ġ( under lined ) Ġset Text Under lined () Ġelse Ġset Text Not Under lined () Ċ } Ċ Ċ fun ĠTextView . setText Under lined () Ġ{ ĊĠĠĠ Ġpaint Flags Ġ= Ġpaint Flags Ġor ĠPaint . UNDER LINE _ TEXT _ FLAG Ċ } Ċ Ċ fun ĠTextView . setText Not Under lined () Ġ{ ĊĠĠĠ Ġpaint Flags Ġ= Ġpaint Flags Ġand ĠPaint . UNDER LINE _ TEXT _ FLAG . inv () Ċ } ĊĊ Ċ fun ĠTextView . set Drawable Left ( drawable : ĠDrawable ?, Ġwidth : ĠInt Ġ= Ġ 0 , Ġheight : ĠInt Ġ= Ġwidth ) Ġ= ĊĠĠĠĠĠĠĠ Ġset Draw ables ( drawable , Ġwidth Ġ= Ġwidth , Ġheight Ġ= Ġheight ) Ċ Ċ fun ĠTextView . set Draw ables ( ĊĠĠĠĠĠĠĠ Ġleft : ĠDrawable ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġtop : ĠDrawable ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġright : ĠDrawable ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġbottom : ĠDrawable ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġwidth : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠ Ġheight : ĠInt Ġ= Ġ 0 Ċ ) Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( width Ġ== Ġ 0 Ġ|| Ġheight Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Draw ables With Intr insic Bounds ( left , Ġtop , Ġright , Ġbottom ) ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Compound Draw ables ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft ?. apply Ġ{ Ġset Size ( width , Ġheight ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop ?. apply Ġ{ Ġset Size ( width , Ġheight ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright ?. apply Ġ{ Ġset Size ( width , Ġheight ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom ?. apply Ġ{ Ġset Size ( width , Ġheight ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ċ Ċ fun ĠTextView . set Draw ables With Intr insic Bounds ( ĊĠĠĠĠĠĠĠ Ġleft : ĠDrawable ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġtop : ĠDrawable ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġright : ĠDrawable ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġbottom : ĠDrawable ? Ġ= Ġnull Ċ ) Ġ= ĊĠĠĠĠĠĠĠ Ġset Compound Draw ables With Intr insic Bounds ( left , Ġtop , Ġright , Ġbottom ) ĊĊ Ċ fun ĠTextView . el lip size Dynamic ( text : ĠString ) Ġ{ ĊĠĠĠ Ġthis . text Ġ= Ġtext ĊĠĠĠ Ġthis . after Latest Measured Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġno Of Lines Visible Ġ= Ġthis . height Ġ/ Ġ( this . line Height ) ĊĠĠĠĠĠĠĠ Ġthis . max Lines Ġ= Ġno Of Lines Visible ĊĠĠĠĠĠĠĠ Ġthis . el lip size Ġ= ĠText Utils . Truncate At . END ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠTextView . el lip size ViewPager ( text : ĠString ) Ġ{ ĊĠĠĠ Ġthis . text Ġ= Ġtext ĊĠĠĠ Ġthis . after Latest Measured Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġno Of Lines Visible Ġ= Ġthis . height Ġ/ Ġ( this . line Height . toDouble () Ġ* Ġ 0 . 8 4 ). toInt () ĊĠĠĠĠĠĠĠ Ġthis . max Lines Ġ= Ġno Of Lines Visible ĊĠĠĠĠĠĠĠ Ġthis . el lip size Ġ= ĠText Utils . Truncate At . END ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠTextView . setText Or Hide ( text : ĠString ?) Ġ{ ĊĠĠĠ Ġtext ?. let Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . text Ġ= Ġit ĊĠĠĠ Ġ} Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠAppCompat TextView . setText Or Hide ( text : ĠString ?) Ġ{ ĊĠĠĠ Ġtext ?. let Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . text Ġ= Ġit ĊĠĠĠ Ġ} Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} Ċ } Ċ Ċ var ĠTextView . compound Drawable Start : ĠDrawable ? ĊĠĠĠ Ġget () Ġ= Ġcompound Draw ables Relative [ 0 ] ĊĠĠĠ Ġset ( value ) Ġ= Ġset Compound Draw ables Relative With Intr insic Bounds ( value , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompound Draw ables Relative [ 1 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompound Draw ables Relative [ 2 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompound Draw ables Relative [ 3 ]) Ċ Ċ var ĠTextView . compound Drawable Top : ĠDrawable ? ĊĠĠĠ Ġget () Ġ= Ġcompound Draw ables Relative [ 1 ] ĊĠĠĠ Ġset ( value ) Ġ= Ġset Compound Draw ables Relative With Intr insic Bounds ( compound Draw ables Relative [ 0 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompound Draw ables Relative [ 2 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompound Draw ables Relative [ 3 ]) Ċ Ċ var ĠTextView . compound Drawable End : ĠDrawable ? ĊĠĠĠ Ġget () Ġ= Ġcompound Draw ables Relative [ 2 ] ĊĠĠĠ Ġset ( value ) Ġ= Ġset Compound Draw ables Relative With Intr insic Bounds ( compound Draw ables Relative [ 0 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompound Draw ables Relative [ 1 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompound Draw ables Relative [ 3 ]) Ċ Ċ var ĠTextView . compound Drawable Bottom : ĠDrawable ? ĊĠĠĠ Ġget () Ġ= Ġcompound Draw ables Relative [ 3 ] ĊĠĠĠ Ġset ( value ) Ġ= Ġset Compound Draw ables Relative With Intr insic Bounds ( compound Draw ables Relative [ 0 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompound Draw ables Relative [ 1 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompound Draw ables Relative [ 2 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue ) ĊĊ Ċ /** Ċ Ġ* ĠMe as uring ĠTextView Ġwidth . ĠUse Ġthis Ġextension Ġafter Ġview Ġrendered Ċ Ġ*/ Ċ fun ĠTextView . measure Width (): ĠInt Ġ{ ĊĠĠĠ Ġval Ġbound Ġ= ĠRect () ĊĠĠĠ Ġthis . paint . getText Bounds ( this . text . toString (), Ġ 0 , Ġthis . text . toString (). length , Ġbound ) ĊĠĠĠ Ġreturn Ġbound . width () Ċ } Ċ Ċ /** Ċ Ġ* ĠMe as uring ĠTextView Ġheight . ĠUse Ġthis Ġextension Ġafter Ġview Ġrendered Ċ Ġ*/ Ċ fun ĠTextView . measure Height (): ĠInt Ġ{ ĊĠĠĠ Ġval Ġbound Ġ= ĠRect () ĊĠĠĠ Ġthis . paint . getText Bounds ( this . text . toString (), Ġ 0 , Ġthis . text . toString (). length , Ġbound ) ĊĠĠĠ Ġreturn Ġbound . height () Ċ } ĊĊĊ Ċ /** Ċ Ġ* ĠSetting Ġnew Ġtext Ġto ĠTextView Ġwith Ġsomething Ġlike Ġfade Ġto Ġalpha Ġanimation Ċ Ġ* Ċ Ġ* Ġ@ property Ġtext Ġ- Ġtext Ġto Ġset Ġto ĠTextView Ċ Ġ* Ġ@ property Ġduration Ġ- Ġanimation Ġfinal Ġduration Ċ Ġ*/ Ċ fun ĠTextView . setText With Animation ( text : ĠString , Ġduration : ĠLong ) Ġ{ ĊĠĠĠ Ġval Ġstep Duration Ġ= Ġduration / 2 ĊĠĠĠ Ġthis . animate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. alpha ( 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Duration ( step Duration ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with End Action Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . text Ġ= Ġtext ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . animate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. alpha ( 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Duration ( step Duration ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. start () Ċ } Ċ Ċ /** Ċ Ġ* ĠSetting Ġnew Ġtext Ġto ĠTextView Ġwith Ġsomething Ġlike Ġwidth Ġtransition Ġanimation Ċ Ġ* Ċ Ġ* Ġ@ property Ġtext Ġ- Ġtext Ġto Ġset Ġto ĠTextView Ċ Ġ* Ġ@ property Ġanim Duration Ġ- Ġanimation Ġfinal Ġduration Ċ Ġ*/ Ċ fun ĠTextView . setText With Transition ( text : ĠString , Ġanim Duration : ĠLong ) Ġ{ ĊĠĠĠ Ġval Ġwith Ġ= Ġthis . width ĊĠĠĠ Ġval Ġthis Text Ġ= Ġthis ĊĠĠĠ Ġval Ġtext LayoutParams Ġ= Ġthis . layout Params ĊĠĠĠ ĠValue Animator . of Int ( with , Ġ 0 ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Update Listener Ġ{ Ġvalue Animator Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġvalue Animator . animated Value Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlayout Params : ĠViewGroup . LayoutParams Ġ= Ġtext LayoutParams ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params . width Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Text . layout Params Ġ= Ġlayout Params ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdo On End Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Text . text Ġ= Ġtext ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Text . measure ( 0 , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠValue Animator . of Int ( 0 , Ġthis Text . meas ured Width ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Update Listener Ġ{ Ġvalue Animator Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġvalue Animator . animated Value Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlayout Params : ĠViewGroup . LayoutParams Ġ= Ġtext LayoutParams ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params . width Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis Text . layout Params Ġ= Ġlayout Params ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġanim Duration ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinterpol ator Ġ= ĠAccel erate De cel erate Interpolator () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. start () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġduration Ġ= Ġanim Duration ĊĠĠĠĠĠĠĠ Ġinterpol ator Ġ= ĠAccel erate De cel erate Interpolator () ĊĠĠĠ Ġ}. start () Ċ } ĊĊĊ