package Ġcom . gu u idea . in reading . widget Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Paint Ċ import Ġandroid . graphics . Path Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġcom . gu u idea . in reading . R Ċ Ċ class ĠCustom Action bar Ġ: ĠFrame Layout Ġ{ ĊĊĠĠĠ Ġvar Ġtitle : ĠString ? Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Title ?. text Ġ= Ġfield ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġvar Ġright Title : ĠString ? Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġtv Title : ĠTextView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġimg Back : ĠImageView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġright Tv : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmore O op : ĠImageView ĊĠĠĠ Ġvar Ġimg Click er : ĠOn ClickListener ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimg Back . setOnClickListener ( field ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġright Click er : ĠOn ClickListener ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġright Tv . setOnClickListener ( field ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġmore Click er : ĠOn ClickListener ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmore O op . setOnClickListener ( field ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġvar Ġis Show More O op Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġright Visibility Ġ= Ġtrue ĊĊĠĠĠ Ġconstructor ( context : ĠContext ) Ġ: Ġsuper ( context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit ( null , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ) Ġ: Ġsuper ( context , Ġattrs ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit ( attrs , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet , Ġdef Style : ĠInt ) Ġ: Ġsuper ( context , Ġattrs , Ġdef Style ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit ( attrs , Ġdef Style ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit ( attrs : ĠAttributeSet ?, Ġdef Style : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Attrs ( attrs ) ĊĠĠĠĠĠĠĠ Ġinit Widget () ĊĠĠĠĠĠĠĠ Ġbind Event () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Attrs ( attrs : ĠAttributeSet ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġcontext . obtain Styled Attributes ( attrs , ĠR . style able . Custom Action bar ) ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġif Ġ(! a . getString ( R . style able . Custom Action bar _ tit ile ). isNull OrEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa . getString ( R . style able . Custom Action bar _ tit ile ) Ġelse Ġ"" ĊĠĠĠĠĠĠĠ Ġright Title Ġ= Ġa . getString ( R . style able . Custom Action bar _ rig th _ content ) ĊĠĠĠĠĠĠĠ Ġis Show More O op Ġ= Ġa . getBoolean ( R . style able . Custom Action bar _ is _ show _ more _ oop , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġright Visibility Ġ= Ġa . getBoolean ( R . style able . Custom Action bar _ right _ visibility , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġa . recycle () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Widget () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview : ĠView Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( context ). inflate ( R . layout . custom _ action _ bar , Ġnull ) ĊĠĠĠĠĠĠĠ Ġtv Title Ġ= Ġview . findViewById ( R . id . tv _ center _ title ) ĊĠĠĠĠĠĠĠ Ġimg Back Ġ= Ġview . findViewById ( R . id . img _ back ) ĊĠĠĠĠĠĠĠ Ġright Tv Ġ= Ġview . findViewById ( R . id . right _ tv ) ĊĠĠĠĠĠĠĠ Ġright Tv . visibility Ġ= Ġif Ġ( right Visibility Ġ&& Ġ! is Show More O op ) ĠView . VISIBLE Ġelse ĠView . GONE ĊĠĠĠĠĠĠĠ Ġmore O op Ġ= Ġview . findViewById ( R . id . more _ op ) ĊĠĠĠĠĠĠĠ Ġmore O op . visibility Ġ= Ġif Ġ( right Visibility Ġ&& Ġis Show More O op ) ĠView . VISIBLE Ġelse ĠView . GONE ĊĠĠĠĠĠĠĠ Ġadd View ( view ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbind Event () Ġ{ ĊĠĠĠĠĠĠĠ Ġtv Title ?. text Ġ= Ġtitle ĊĠĠĠ Ġ} Ċ Ċ }