package Ġcom . github . gu qt 1 7 8 . utils . ext Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Dialog Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . View Ċ import Ġandroid . view . WindowManager Ċ import Ġandroid . view . input method . Input Method Manager Ċ import Ġandroid . widget . EditText Ċ import Ġcom . github . gu qt 1 7 8 . Default Consumer Ċ import Ġcom . github . gu qt 1 7 8 . utils . keyboard . keyboard visibility event . Auto Activity Lifecycle Callback Ċ import Ġcom . github . gu qt 1 7 8 . utils . keyboard . keyboard visibility event . Keyboard Visibility Event Ċ import Ġcom . github . gu qt 1 7 8 . utils . keyboard . keyboard visibility event . Keyboard Visibility EventListener Ċ Ċ /** Ċ Ġ* Ġ çĤ¹åĩ» ç©º çĻ½ åĮºåŁŁ éļĲèĹı éĶ® çĽĺ Ċ Ġ*/ Ċ fun ĠActivity . hide Keyboard ( event : ĠMotion Event ) Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfocus View Ġ= Ġthis . current Focus ĊĠĠĠĠĠĠĠ Ġif Ġ( focus View Ġ!= Ġnull Ġ&& Ġfocus View Ġis ĠEditText ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// val Ġregion Ġ= ĠRect () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// focus View . get Hit Rect ( region ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// err (" x , y Ġis Ġin Ġrect ? ${ region . contains ( event . x . toInt (), Ġevent . y . toInt ()) }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// focus View . getGlobal Visible Rect () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocation Ġ= Ġint ArrayOf ( 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfocus View . getLocation In Window ( location ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġleft Ġ= Ġlocation [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtop Ġ= Ġlocation [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġright Ġ= Ġleft Ġ+ Ġfocus View . width ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbottom Ġ= Ġtop Ġ+ Ġfocus View . height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠåĪ¤æĸŃ çĦ ¦ çĤ¹ ä½įç½® åĿĲæłĩ æĺ¯åĲ¦ åľ¨ ç©ºéĹ´ åĨħ ï¼Į å¦Ĥæŀľ ä½įç½® åľ¨ æİ§ä»¶ å¤ĸ ï¼Į åĪĻ éļĲèĹı éĶ® çĽĺ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( event . raw X Ġ< Ġleft Ġ|| Ġevent . raw X Ġ> Ġright Ġ|| Ġevent . y Ġ< Ġtop Ġ|| Ġevent . raw Y Ġ> Ġbottom ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ éļĲèĹı éĶ® çĽĺ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Input Method Manager (). hide Soft Input From Window ( focus View . window Token , ĠInput Method Manager . HIDE _ NOT _ ALWAYS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ /** Ċ Ġ* ĠShow Ġkeyboard Ġand Ġfocus Ġto Ġgiven ĠEditText . Ċ Ġ* ĠUse Ġthis Ġmethod Ġif Ġtarget ĠEditText Ġis Ġin ĠDialog . Ċ Ġ* Ċ Ġ* Ġ@ param Ġdialog ĠDialog Ċ Ġ* Ġ@ param Ġtarget ĠEditText Ġto Ġfocus Ċ Ġ*/ Ċ fun ĠDialog . show Keyboard In Dialog ( target : ĠEditText ) Ġ{ ĊĠĠĠ Ġthis . window ?. set Soft Input Mode ( WindowManager . LayoutParams . SOFT _ INPUT _ STATE _ VISIBLE ) ĊĠĠĠ Ġtarget . request Focus () Ċ } Ċ Ċ /** Ċ Ġ* Ġhide Ġkeyboard Ċ Ġ* Ċ Ġ* Ġ@ param Ġcontext ĠContext Ċ Ġ* Ġ@ param Ġtarget Ġ ĠView Ġthat Ġcurrently Ġhas Ġfocus Ċ Ġ*/ Ċ fun ĠContext . hide Keyboard ( target : ĠView ) Ġ{ ĊĠĠĠ Ġval Ġimm Ġ= Ġthis . getInput Method Manager () ĊĠĠĠ Ġimm . hide Soft Input From Window ( target . window Token , Ġ 0 ) Ċ } Ċ Ċ /** Ċ Ġ* Ġhide Ġkeyboard Ċ Ġ* Ċ Ġ* Ġ@ param Ġactivity ĠActivity Ċ Ġ*/ Ċ fun ĠActivity . hide Keyboard () Ġ{ ĊĠĠĠ Ġval Ġview Ġ= Ġthis . window . decor View ĊĠĠĠ Ġthis . hide Keyboard ( view ) Ċ } Ċ Ċ /** Ċ Ġ* ĠShow Ġkeyboard Ġand Ġfocus Ġto Ġgiven ĠEditText Ċ Ġ* Ċ Ġ* Ġ@ param Ġcontext ĠContext Ċ Ġ* Ġ@ param Ġtarget Ġ ĠEditText Ġto Ġfocus Ċ Ġ*/ Ċ fun ĠContext . show Keyboard ( target : ĠEditText ) Ġ{ ĊĠĠĠ Ġval Ġimm Ġ= Ġthis . getInput Method Manager () ĊĠĠĠ Ġimm . show Soft Input ( target , ĠInput Method Manager . SHOW _ IMP LICIT ) Ċ } Ċ Ċ /** Ċ Ġ* ĠShow Ġkeyboard Ċ Ġ* Ċ Ġ* Ġ@ param Ġcontext ĠContext Ċ Ġ* Ġ@ param Ġtarget Ġ ĠEditText Ġto Ġfocus Ċ Ġ*/ Ċ fun ĠActivity . show Keyboard Force ( view : ĠView ? Ġ= Ġnull ) Ġ{ ĊĠĠĠ Ġval Ġtarget Ġ= Ġview Ġ?: Ġthis . findViewById ( android . R . id . content ) ĊĠĠĠ Ġwith ( getInput Method Manager ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Soft Input ( target , ĠInput Method Manager . RESULT _ SHO WN ) ĊĠĠĠĠĠĠĠ Ġtoggle Soft Input ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInput Method Manager . SHOW _ FOR CED , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInput Method Manager . HIDE _ IMP LICIT _ ONLY ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠContext . getInput Method Manager (): ĠInput Method Manager Ġ{ ĊĠĠĠ Ġreturn Ġthis . getSystem Service ( Context . INPUT _ METHOD _ SERVICE ) Ġas ĠInput Method Manager Ċ } ĊĊ Ċ /** Ċ Ġ* Ġobserve Ġkeyboard Ġvisibility Ġevent Ċ Ġ* Ġ@ param Ġlistener Ġtrue Ġ- Ġkeyboard Ġis Ġopen , otherwise Ġis Ġclosed Ċ Ġ*/ Ċ fun ĠActivity ?. observe Keyboard Event ( listener : ĠDefault Consumer < Boolean >? Ġ= Ġnull ) Ġ{ ĊĠĠĠ Ġthis ?. let Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġun regist rar Ġ= ĠKeyboard Visibility Event . register EventListener ( this , Ġobject Ġ: ĠKeyboard Visibility EventListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Visibility Changed ( isOpen : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ?. invoke ( isOpen ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġthis . application ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. register Activity Lifecycle Callbacks ( object Ġ: ĠAuto Activity Lifecycle Callback ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Target Activity Destroyed () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġun regist rar . unregister () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ }