package Ġcom . the code yard . elli ps ized text view Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . support . v 7 . widget . AppCompat TextView Ċ import Ġandroid . text . Sp ann able Ċ import Ġandroid . text . Sp ann able String Ċ import Ġandroid . text . Sp ann able StringBuilder Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . text . style . ForegroundColor Span Ċ import Ġandroid . util . Attribute Set ĊĊ Ċ /** Ċ Ġ* ĠA Ġcustom Ġ[ AppCompat TextView ] Ġthat Ġallows Ġcustom Ġellipsis Ġand Ġellipsis Color . Ċ Ġ*/ Ċ class ĠEl lips ized TextView Ġ@ Jvm Over loads Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ? Ġ= Ġnull , Ġdef Style Attr : ĠInt Ġ= Ġ 0 ) Ġ: ĠAppCompat TextView ( context , Ġattrs , Ġdef Style Attr ) Ġ{ ĊĠĠĠ Ġvar Ġellipsis Ġ= ĠgetDefault El lipsis (). toString () ĊĠĠĠ Ġvar Ġellipsis Color Ġ= ĠgetDefault El lipsis Color () ĊĊĠĠĠ Ġprivate Ġval Ġellipsis Sp ann able : ĠSp ann able String ĊĠĠĠ Ġprivate Ġval Ġsp ann able StringBuilder Ġ= ĠSp ann able StringBuilder () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( attrs Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtyped Array Ġ= Ġcontext . theme . obtain Styled Attributes ( attrs , ĠR . style able . El lips ized TextView , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtyped Array ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġellipsis Ġ= Ġtyped Array . getString ( R . style able . El lips ized TextView _ ellipsis ) Ġ?: ĠgetDefault El lipsis (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġellipsis Color Ġ= Ġtyped Array . getColor ( R . style able . El lips ized TextView _ ellipsis Color , ĠgetDefault El lipsis Color ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtyped Array . recycle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġellipsis Sp ann able Ġ= ĠSp ann able String ( ellipsis ) ĊĠĠĠĠĠĠĠ Ġellipsis Sp ann able . set Span ( ForegroundColor Span ( ellipsis Color ), Ġ 0 , Ġellipsis . length , ĠSp ann able . SPAN _ EXCL USIVE _ EXCL USIVE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Measure ( width Measure Spec : ĠInt , Ġheight Measure Spec : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Measure ( width Measure Spec , Ġheight Measure Spec ) ĊĠĠĠĠĠĠĠ Ġval Ġavailable Screen Width Ġ= Ġmeasured Width Ġ- Ġcompound Padding Left . toFloat () Ġ- Ġcompound Padding Right . toFloat () ĊĠĠĠĠĠĠĠ Ġvar Ġavailable Text Width Ġ= Ġavailable Screen Width Ġ* Ġmax Lines ĊĠĠĠĠĠĠĠ Ġvar Ġel lips ized Text Ġ= ĠText Utils . el lip size ( text , Ġpaint , Ġavailable Text Width , Ġel lip size ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( elli ps ized Text . toString () Ġ!= Ġtext . toString ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIf Ġthe Ġel lips ized Text Ġis Ġdifferent Ġthan Ġthe Ġoriginal Ġtext , Ġthis Ġmeans Ġthat Ġit Ġdidn 't Ġfit Ġand Ġgot Ġindeed Ġel lips ized . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCalculate Ġthe Ġnew Ġavailable Text Width Ġby Ġtaking Ġinto Ġconsideration Ġthe Ġsize Ġof Ġthe Ġcustom Ġellipsis , Ġtoo . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġavailable Text Width Ġ= Ġ( available Screen Width Ġ- Ġpaint . measure Text ( ellipsis )) Ġ* Ġmax Lines ĊĠĠĠĠĠĠĠĠĠĠĠ Ġel lips ized Text Ġ= ĠText Utils . el lip size ( text , Ġpaint , Ġavailable Text Width , Ġel lip size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdefault El lipsis Start Ġ= Ġel lips ized Text . indexOf ( getDefault El lipsis ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdefault El lipsis End Ġ= Ġdefault El lipsis Start Ġ+ Ġ 1 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsp ann able StringBuilder . clear () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠUpdate Ġthe Ġtext Ġwith Ġthe Ġel lips ized Ġversion Ġand Ġreplace Ġthe Ġdefault Ġellipsis Ġwith Ġthe Ġcustom Ġone . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġsp ann able StringBuilder . append ( elli ps ized Text ). replace ( default El lipsis Start , Ġdefault El lipsis End , Ġellipsis Sp ann able ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetDefault El lipsis (): ĠChar Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠTypography . ellipsis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetDefault El lipsis Color (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtext Colors . default Color ĊĠĠĠ Ġ} Ċ }