package Ġorg . cu ong nv . segment view Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . LinearLayout Ċ Ċ class ĠSegment Container Fix Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠ Ġcontext : ĠContext , Ġattrs : ĠAttributeSet ? Ġ= Ġnull , Ġdef Style Attr : ĠInt Ġ= Ġ 0 , Ċ ) Ġ: ĠLinearLayout ( context , Ġattrs , Ġdef Style Attr ), ĠSegment Container Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġ_ segment Indicator : ĠSegment Indicator ĊĊĠĠĠ Ġprivate Ġvar Ġ_ selectedIndex Ġ= Ġ- 1 ĊĠĠĠ Ġprivate Ġvar Ġ_ segment Changed Listener : ĠSegment Layout . On Segment Changed ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġadd View ( child : ĠView , Ġindex : ĠInt , Ġparams : ĠViewGroup . LayoutParams ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( params Ġis ĠLayout Params ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams . weight Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġchild . setTag ( R . id . tag _ segment _ index , Ġchild Count ) ĊĠĠĠĠĠĠĠ Ġchild . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew SelectedIndex Ġ= Ġit . getTag ( R . id . tag _ segment _ index ) Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new SelectedIndex Ġ!= Ġ_ selectedIndex ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset SelectedIndex Internal ( new SelectedIndex , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . addView ( child , Ġindex , Ġparams ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġreset () Ġ{ ĊĠĠĠĠĠĠĠ Ġremove All Views () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset On Segment Changed Listener ( l : ĠSegment Layout . On Segment Changed ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ segment Changed Listener Ġ= Ġl ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Indicator ( segment Indicator : ĠSegment Indicator ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ segment Indicator Ġ= Ġsegment Indicator ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdispatch Set Child Selected ( index : ĠInt , Ġis Selected : ĠBoolean , Ġnotify : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( index Ġin Ġ 0 Ġuntil Ġchild Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Child At ( index ). isSelected Ġ= Ġis Selected ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( notify ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isSelected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ segment Changed Listener ?. on Segment Selected ( index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ segment Changed Listener ?. on Segment Un selected ( index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Selected Change ( animate : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(_ selectedIndex Ġin Ġ 0 Ġuntil Ġchild Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchild Ġ= Ġget Child At (_ selectedIndex ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ segment Indicator . on Segment Scroll ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild . left . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild . width , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild . top . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild . height , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanimate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset SelectedIndex Internal ( new SelectedIndex : ĠInt , Ġanimate : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdispatch Set Child Selected (_ selectedIndex , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġ_ selectedIndex Ġ= Ġnew SelectedIndex ĊĠĠĠĠĠĠĠ Ġdispatch Set Child Selected (_ selectedIndex , Ġtrue ) ĊĊĠĠĠĠĠĠĠ Ġpost Ġ{ Ġon Selected Change ( animate ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset SelectedIndex ( index : ĠInt , Ġanimate : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( index Ġ!= Ġ_ selectedIndex Ġ&& Ġindex Ġin Ġ 0 Ġuntil Ġchild Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset SelectedIndex Internal ( index , Ġanimate ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget SelectedIndex () Ġ= Ġ_ selectedIndex ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count () Ġ= Ġchild Count Ċ }