package Ġcom . sp ir acle software . android sample . framework . extensions Ċ Ċ import Ġandroid . view . View Ċ import Ġandroid . view . input method . Editor Info Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroid . widget . TextView Ċ import Ġcom . google . android . material . text field . TextInput Layout Ċ Ċ // region ĠMargin s Ċ var ĠView . top Margin : ĠInt ? ĊĠĠĠ Ġget () Ġ= Ġ( layout Params Ġas ? ĠLinearLayout . LayoutParams )?. top Margin ĊĠĠĠ Ġset ( margin Px ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( layout Params Ġas ? ĠLinearLayout . LayoutParams )?. top Margin Ġ= Ġmargin Px ĊĠĠĠ Ġ} Ċ // endregion Ċ Ċ // region ĠTextView Ċ fun ĠTextView . add Paint Flag ( flag : ĠInt ) Ġ{ ĊĠĠĠ Ġpaint Flags Ġ= Ġpaint Flags Ġor Ġflag Ċ } Ċ Ċ fun ĠTextView . remove Paint Flag ( flag : ĠInt ) Ġ{ ĊĠĠĠ Ġpaint Flags Ġ= Ġpaint Flags Ġand Ġflag . inv () Ċ } Ċ // endregion Ċ Ċ // region ĠText Input Layout Ċ fun ĠText Input Layout . show Or Hide Error ( text : ĠString ?) Ġ{ ĊĠĠĠ Ġerror Ġ= Ġtext ĊĠĠĠ Ġis Error Enabled Ġ= Ġtext Ġ!= Ġnull Ċ } Ċ // endregion Ċ Ċ // region ĠClick ĠList eners Ċ fun ĠView . onClick ( func : Ġ(() Ġ-> ĠUnit )? ) Ġ{ ĊĠĠĠ Ġif Ġ( func Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset OnClickListener ( null ) ĊĠĠĠĠĠĠĠ Ġis Clickable Ġ= Ġfalse ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġset OnClickListener Ġ{ Ġfunc . invoke () Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠView . on Long Click ( func : Ġ(() Ġ-> ĠBoolean )? ) Ġ{ ĊĠĠĠ Ġif Ġ( func Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset On Long ClickListener ( null ) ĊĠĠĠĠĠĠĠ Ġis Long Clickable Ġ= Ġfalse ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġset On Long ClickListener Ġ{ Ġfunc . invoke () Ġ} ĊĠĠĠ Ġ} Ċ } Ċ // endregion Ċ Ċ // region ĠI me ĠAction ĠList eners Ċ fun ĠTextView . on Done Action ( func : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġset On Editor ActionListener Ġ{ Ġ_, Ġaction Id , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( action Id Ġ== ĠEditor Info . IME _ ACTION _ DONE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfunc () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġfalse ĊĠĠĠ Ġ} Ċ } Ċ // endregion