package Ġcom . jc . app . blog . presentation . custom Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . LinearLayout Ċ import Ġcom . google . android . material . button . Material Button Ċ import Ġcom . jc . app . blog . R Ċ Ċ class ĠToggle Custom View Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠ Ġcontext : ĠContext , Ġattrs : ĠAttributeSet ? Ġ= Ġnull , Ġdef Style Attr : ĠInt Ġ= Ġ 0 Ċ ) Ġ: ĠLinearLayout ( context , Ġattrs , Ġdef Style Attr ), ĠView . OnClickListener Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġbutton OnClickListener : Ġ( button Option : ĠButton Option ) Ġ-> ĠUnit Ġ= Ġ{} ĊĊĠĠĠ Ġprivate Ġval Ġbutton Option One : ĠMaterial Button ĊĠĠĠ Ġprivate Ġval Ġbutton Option Two : ĠMaterial Button ĊĠĠĠ Ġprivate Ġvar Ġbutton Option One Text : ĠString Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġbutton Option Two Text : ĠString Ġ= Ġ"" ĊĠĠĠ Ġvar Ġbutton Selected : ĠInt Ġ= Ġ 1 ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠLayoutInflater ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. from ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate ( R . layout . view _ toggle _ custom , Ġthis , Ġtrue ) ĊĊĠĠĠĠĠĠĠ Ġbutton Option One Ġ= Ġview . findViewById ( R . id . btn Option One ) ĊĠĠĠĠĠĠĠ Ġbutton Option Two Ġ= Ġview . findViewById ( R . id . btn Option Two ) ĊĠĠĠĠĠĠĠ Ġbutton Option One . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġbutton Option Two . setOnClickListener ( this ) ĊĊĠĠĠĠĠĠĠ Ġval Ġattributes Ġ= Ġcontext . theme . obtain Styled Attributes ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattrs , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Toggle Three Buttons Custom View , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġbutton Option One Text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattributes . getString ( R . style able . Toggle Three Buttons Custom View _ tt b _ button _ option _ one _ text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġbutton Option Two Text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattributes . getString ( R . style able . Toggle Three Buttons Custom View _ tt b _ button _ option _ two _ text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ"" ĊĊĠĠĠĠĠĠĠ Ġbutton Selected Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattributes . getInteger ( R . style able . Toggle Three Buttons Custom View _ tt b _ button _ selected , Ġ 1 ) ĊĊĠĠĠĠĠĠĠ Ġbutton Option One . text Ġ= Ġbutton Option One Text ĊĠĠĠĠĠĠĠ Ġbutton Option Two . text Ġ= Ġbutton Option Two Text ĊĠĠĠĠĠĠĠ Ġset Button Selected ByDefault ( button Selected ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick ( p 0 : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( p 0 ?. id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn Option One Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton OnClickListener . invoke ( Button Option . ONE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Checked State Of Buttons ( option One Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn Option Two Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton OnClickListener . invoke ( Button Option . TWO ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Checked State Of Buttons ( option Two Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Button Selected ByDefault ( button Selected : ĠInt ){ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( button Selected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġbutton Option One . isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġbutton Option Two . isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Checked State Of Buttons ( ĊĠĠĠĠĠĠĠ Ġoption One : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġoption Two : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . button Option One . isChecked Ġ= Ġoption One ĊĠĠĠĠĠĠĠ Ġthis . button Option Two . isChecked Ġ= Ġoption Two ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġbuttons OnClickListener ( button OnClickListener : Ġ( button Option : ĠButton Option ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . button OnClickListener Ġ= Ġbutton OnClickListener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠButton Option { ĊĠĠĠĠĠĠĠ ĠONE , ĠTWO ĊĠĠĠ Ġ} Ċ Ċ }