package Ġcom . fa iry . lib . ui Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . text . Editable Ċ import Ġandroid . text . Text Watcher Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . View Ċ import Ġandroid . view . View . On Focus ChangeListener Ċ import Ġandroidx . appcompat . widget . AppCompat EditText Ċ import Ġandroidx . core . content . Context Compat Ċ Ċ /** Ċ Ġ* Ġ è¾ĵåħ¥ æĸĩæľ¬ æ¡Ĩ Ġ åı³ è¾¹ æľī èĩª å¸¦ çļĦ åĪłéĻ¤ æĮīéĴ® Ġå½ĵ æľī è¾ĵåħ¥ æĹ¶ ï¼Į æĺ¾ç¤º åĪłéĻ¤ æĮīéĴ® ï¼Į å½ĵ æĹł è¾ĵåħ¥ æĹ¶ ï¼Į ä¸į æĺ¾ç¤º åĪłéĻ¤ æĮīéĴ® ãĢĤ Ċ Ġ* Ċ Ġ*/ Ċ class ĠClear EditText ( context : ĠContext , Ġattrs : ĠAttributeSet ?, Ġdef Style : ĠInt ) Ġ: ĊĠĠĠ ĠAppCompat EditText ( context , Ġattrs , Ġdef Style ), ĠOn Focus ChangeListener , ĊĠĠĠ ĠText Watcher Ġ{ ĊĊĠĠĠ Ġconstructor ( context : ĠContext ) Ġ: Ġthis ( context , Ġnull ) Ġ{} ĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ?) Ġ: Ġthis ( ĊĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠ Ġattrs , ĊĠĠĠĠĠĠĠ ĠR . attr . edit TextStyle ĊĠĠĠ Ġ) Ġ// Ġ è¿ĻéĩĮ æŀĦéĢł æĸ¹æ³ķ ä¹Ł å¾Ī éĩįè¦ģ ï¼Į ä¸į åĬł è¿Ļä¸ª å¾Īå¤ļ å±ŀæĢ§ ä¸įèĥ½ åĨį XML éĩĮéĿ¢ å®ļä¹ī ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠåĪłéĻ¤ æĮīéĴ® çļĦ å¼ķçĶ¨ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm Clear Drawable : ĠDrawable ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æİ§ä»¶ æĺ¯åĲ¦ æľī çĦ ¦ çĤ¹ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġhas F ou cs Ġ= Ġfalse ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åĨħå®¹ åıĺåĮĸ çĽĳåĲ¬ åĻ¨ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġon TextChanged : ĠOn TextChanged ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġinit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit () Ġ{ Ġ// Ġèİ·åıĸ EditText çļĦ Drawable Right , åģĩ å¦Ĥ æ²¡æľī è®¾ç½® æĪĳä»¬ å°± ä½¿çĶ¨ é»ĺè®¤ çļĦ åĽ¾çīĩ ĊĠĠĠĠĠĠĠ Ġm Clear Drawable Ġ= Ġcompound Draw ables [ 2 ] ĊĠĠĠĠĠĠĠ Ġif Ġ( m Clear Drawable Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Clear Drawable Ġ= ĠContext Compat . get Drawable ( context , ĠR . mip map . ic _ cancel ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Clear Drawable ?. setBounds ( ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Clear Drawable ?. intrinsic Width Ġ?: Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Clear Drawable ?. intrinsic Height Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ// Ġé»ĺè®¤ è®¾ç½® éļĲèĹı åĽ¾ æłĩ ĊĠĠĠĠĠĠĠ Ġset Clear Icon Visible ( false ) ĊĠĠĠĠĠĠĠ Ġ// Ġè®¾ç½® çĦ ¦ çĤ¹ æĶ¹åıĺ çļĦ çĽĳåĲ¬ ĊĠĠĠĠĠĠĠ Ġon Focus ChangeListener Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġ// Ġè®¾ç½® è¾ĵåħ¥ æ¡Ĩ éĩĮéĿ¢ åĨħå®¹ åıĳçĶŁ æĶ¹åıĺ çļĦ çĽĳåĲ¬ ĊĠĠĠĠĠĠĠ Ġadd TextChanged Listener ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åĽłä¸º æĪĳä»¬ ä¸įèĥ½ çĽ´æİ¥ ç»Ļ EditText è®¾ç½® çĤ¹åĩ» äºĭä»¶ ï¼Į æīĢä»¥ æĪĳä»¬ çĶ¨ è®° ä½ı æĪĳä»¬ æĮī ä¸ĭçļĦ ä½įç½® æĿ¥ æ¨¡ æĭŁ çĤ¹åĩ» äºĭä»¶ Ġå½ĵ æĪĳä»¬ æĮī ä¸ĭçļĦ ä½įç½® Ġåľ¨ ĠEditText çļĦ å®½åº¦ Ġ- ĊĠĠĠĠ Ġ* Ġ åĽ¾ æłĩ åĪ° æİ§ä»¶ åı³ è¾¹ çļĦ éĹ´ è·Ŀ Ġ- Ġ åĽ¾ æłĩ çļĦ å®½åº¦ ĠåĴĮ ĠEditText çļĦ å®½åº¦ Ġ- Ġ åĽ¾ æłĩ åĪ° æİ§ä»¶ åı³ è¾¹ çļĦ éĹ´ è·Ŀ ä¹ĭéĹ´ æĪĳä»¬ å°± ç®Ĺ çĤ¹åĩ» äºĨ åĽ¾ æłĩ ï¼Į ç« ĸ çĽ´ æĸ¹åĲĳ å°± æ²¡æľī èĢĥèĻĳ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Touch Event ( event : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( event . action Ġ== ĠMotion Event . ACTION _ UP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( compound Draw ables [ 2 ] Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtouch able Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . x Ġ> Ġwidth Ġ- Ġtotal Padding Right Ġ&& Ġevent . x Ġ< Ġwidth Ġ- Ġpadding Right ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( touch able ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . setText ("") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Touch Event ( event ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġå½ĵ Clear EditText çĦ ¦ çĤ¹ åıĳçĶŁ åıĺåĮĸ çļĦæĹ¶åĢĻ ï¼Į åĪ¤æĸŃ éĩĮéĿ¢ åŃĹç¬¦ä¸² éķ¿åº¦ è®¾ç½® æ¸ħ éĻ¤ åĽ¾ æłĩ çļĦ æĺ¾ç¤º ä¸İ éļĲèĹı ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Focus Change ( v : ĠView ?, Ġhas Focus : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġhas F ou cs Ġ= Ġhas Focus ĊĠĠĠĠĠĠĠ Ġif Ġ( has Focus ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext ?. isNotEmpty ()?. let Ġ{ Ġset Clear Icon Visible ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Clear Icon Visible ( false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġè®¾ç½® æ¸ħ éĻ¤ åĽ¾ æłĩ çļĦ æĺ¾ç¤º ä¸İ éļĲèĹı ï¼Į è°ĥçĶ¨ set Compound Draw ables ä¸º EditText ç»ĺ åĪ¶ ä¸Ĭ åİ» ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġvisible ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Clear Icon Visible ( visible : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġright Ġ= Ġif Ġ( visible ) Ġm Clear Drawable Ġelse Ġnull ĊĠĠĠĠĠĠĠ Ġset Compound Draw ables ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompound Draw ables [ 0 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompound Draw ables [ 1 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġright , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompound Draw ables [ 3 ] ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġå½ĵ è¾ĵåħ¥ æ¡Ĩ éĩĮéĿ¢ åĨħå®¹ åıĳçĶŁ åıĺåĮĸ çļĦæĹ¶åĢĻ åĽŀè°ĥ çļĦæĸ¹æ³ķ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon TextChanged ( ĊĠĠĠĠĠĠĠ Ġs : ĠCharSequence , ĊĠĠĠĠĠĠĠ Ġstart : ĠInt , ĊĠĠĠĠĠĠĠ Ġcount : ĠInt , ĊĠĠĠĠĠĠĠ Ġafter : ĠInt ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( has F ou cs ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Clear Icon Visible ( s . isNotEmpty ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġon TextChanged ?. on TextChanged ( s , Ġstart , Ġcount , Ġafter ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( ĊĠĠĠĠĠĠĠ Ġs : ĠCharSequence , ĊĠĠĠĠĠĠĠ Ġstart : ĠInt , ĊĠĠĠĠĠĠĠ Ġcount : ĠInt , ĊĠĠĠĠĠĠĠ Ġafter : ĠInt ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ) Ġ{} ĊĊĠĠĠ Ġinterface ĠOn TextChanged Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon TextChanged ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs : ĠCharSequence , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġafter : ĠInt ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }