package Ġcom . github . boy be ak . starter . widget Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics .* Ċ import Ġandroid . os . Build Ċ import Ġandroid . support . annotation . Requires Api Ċ import Ġandroid . support . v 7 . widget . AppCompat EditText Ċ import Ġandroid . support . v 7 . widget . AppCompat TextView Ċ import Ġandroid . text . Editable Ċ import Ġandroid . text . Input Filter Ċ import Ġandroid . text . InputType Ċ import Ġandroid . text . Text Watcher Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . Gravity Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroid . widget . LinearLayout Ċ import Ġcom . github . boy be ak . starter . R Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġg ao yun fe i Ġon Ġ 2 0 1 8 / 2 / 1 . Ċ Ġ*/ Ċ Ċ class ĠS ms Editor Layout Ġ: ĠFrame Layout , ĠText Watcher Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġm Input Et : ĠAppCompat EditText ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Holder Container : ĠLinearLayout ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġm MaxLength Ġ= Ġ 6 Ċ Ċ // ĠĠĠ Ġprivate Ġval Ġm Holder Str Ġ= Ġ" âĢĶ " ĊĊĠĠĠ Ġ@ Jvm Over loads Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ? Ġ= Ġnull , Ġdef Style Attr : ĠInt Ġ= Ġ 0 ) Ġ: Ġsuper ( context , Ġattrs , Ġdef Style Attr ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit This ( context , Ġattrs ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Requires Api ( api Ġ= ĠBuild . VERSION _ CODES . LO L LI POP ) ĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ?, Ġdef Style Attr : ĠInt , Ġdef Style Res : ĠInt ) Ġ: Ġsuper ( context , Ġattrs , Ġdef Style Attr , Ġdef Style Res ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit This ( context , Ġattrs ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit This ( context : ĠContext , Ġattrs : ĠAttributeSet ?) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġm Input Et Ġ= ĠAppCompat EditText ( context , Ġattrs ) ĊĠĠĠĠĠĠĠ Ġm Input Et !!. is Cursor Visible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġm Input Et !!. setText Appearance ( getContext (), ĠR . style . TextAppearance _ AppCompat _ Head line ) ĊĠĠĠĠĠĠĠ Ġm Input Et !!. setTextColor ( Color . TRANSP ARENT ) ĊĠĠĠĠĠĠĠ Ġm Input Et !!. set BackgroundColor ( Color . TRANSP ARENT ) ĊĠĠĠĠĠĠĠ Ġm Input Et !!. max Lines Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġm Input Et !!. gravity Ġ= ĠGr avity . CENTER ĊĠĠĠĠĠĠĠ Ġm Input Et !!. input Type Ġ= ĠInput Type . TYPE _ CLASS _ NUMBER ĊĊĠĠĠĠĠĠĠ Ġm Holder Container Ġ= ĠLinearLayout ( context , Ġattrs ) ĊĠĠĠĠĠĠĠ Ġm Holder Container !!. orientation Ġ= ĠLinearLayout . HORIZONTAL ĊĠĠĠĠĠĠĠ Ġm Holder Container !!. gravity Ġ= ĠGr avity . CENTER ĊĊĠĠĠĠĠĠĠ Ġset MaxLength ( m MaxLength ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġm MaxLength ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠLinearLayout . LayoutParams ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFrame Layout . LayoutParams . MATCH _ PARENT , ĠFrame Layout . LayoutParams . WRAP _ CONTENT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams . weight Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġmake Holder View () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv . tag Ġ= Ġi ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Holder Container !!. addView ( v , Ġparams ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġholder Params Ġ= ĠFrame Layout . LayoutParams ( Frame Layout . LayoutParams . MATCH _ PARENT , ĠFrame Layout . LayoutParams . WRAP _ CONTENT ) ĊĠĠĠĠĠĠĠ Ġholder Params . gravity Ġ= ĠGr avity . CENTER ĊĠĠĠĠĠĠĠ Ġadd View ( m Holder Container , Ġholder Params ) ĊĊĠĠĠĠĠĠĠ Ġval Ġinput Params Ġ= ĠFrame Layout . LayoutParams ( Frame Layout . LayoutParams . MATCH _ PARENT , ĠFrame Layout . LayoutParams . WRAP _ CONTENT ) ĊĠĠĠĠĠĠĠ Ġinput Params . gravity Ġ= ĠGr avity . CENTER ĊĠĠĠĠĠĠĠ Ġadd View ( m Input Et , Ġinput Params ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset MaxLength ( length : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm MaxLength Ġ= Ġlength ĊĠĠĠĠĠĠĠ Ġval Ġarray Ġ= ĠarrayOf Null s < Input Filter >( 1 ) ĊĠĠĠĠĠĠĠ Ġarray [ 0 ] Ġ= ĠInput Filter . Length Filter ( m MaxLength ) ĊĠĠĠĠĠĠĠ Ġm Input Et !!. filters Ġ= Ġarray ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Code Text Ġ(): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġm Input Et !!. text . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmake Holder View (): ĠAppCompat TextView Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtv Ġ= ĠSingle Code View ( context ) Ċ // ĠĠĠĠĠĠĠ Ġtv . text Ġ= Ġm Holder Str ĊĠĠĠĠĠĠĠ Ġtv . gravity Ġ= ĠGr avity . CENTER ĊĠĠĠĠĠĠĠ Ġtv . type face Ġ= ĠType face . DEFAULT _ BOLD ĊĠĠĠĠĠĠĠ Ġtv . set Padding ( 2 4 , Ġ 0 , Ġ 2 4 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġtv . setText Appearance ( context , ĠR . style . TextAppearance _ AppCompat _ Head line ) ĊĠĠĠĠĠĠĠ Ġtv . include Font Padding Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġtv . max Lines Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġreturn Ġtv ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Attached To Window () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attached To Window () ĊĠĠĠĠĠĠĠ Ġm Input Et !!. add TextChanged Listener ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detached From Window () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Detached From Window () ĊĠĠĠĠĠĠĠ Ġm Input Et !!. remove TextChanged Listener ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( s : ĠCharSequence , Ġstart : ĠInt , Ġcount : ĠInt , Ġafter : ĠInt ) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence , Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlength Ġ= Ġs . length ĊĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġm Holder Container !!. child Count ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġcount ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtv Ġ= Ġm Holder Container !!. getChild At ( i ) Ġas ĠAppCompat TextView ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ< Ġlength ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv . text Ġ= Ġs [ i ]. toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv . text Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠSingle Code View Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext : ĠContext , Ġattrs : ĠAttributeSet ? Ġ= Ġnull , Ġdef Style Attr : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġ) Ġ: ĠAppCompat TextView ( context , Ġattrs , Ġdef Style Attr ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġrect F : ĠRect F Ġ= ĠRect F () ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġholder Paint : ĠPaint Ġ= ĠPaint () ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder Paint . color Ġ= ĠColor . BLACK ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder Paint . stroke Width Ġ= Ġ 4 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder Paint . is Anti Alias Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Draw ( canvas ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( text Ġ== Ġnull Ġ|| Ġtext . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcenter Line : ĠFloat Ġ= Ġ( height Ġ- Ġpadding Top Ġ- Ġpadding Bottom ). toFloat () Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġround Ġ= Ġ 6 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrect F . left Ġ= Ġpadding Start . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrect F . top Ġ= Ġcenter Line Ġ- Ġround ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrect F . right Ġ= Ġ( width Ġ- Ġpadding End ). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrect F . bottom Ġ= Ġcenter Line Ġ+ Ġround ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas !!. draw Round Rect ( rect F , Ġround , Ġround , Ġholder Paint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ