package Ġpy x is . uz uki . live . rich util sk t . widget Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Type face Ċ import Ġandroid . text . Sp ann able StringBuilder Ċ import Ġandroid . text . style . Absolute Size Span Ċ import Ġandroid . text . style . ForegroundColor Span Ċ import Ġandroid . text . style . Style Span Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . widget . Button Ċ import Ġpy x is . uz uki . live . rich util sk t . R Ċ Ċ class ĠCom bined Button Ġconstructor ( context : ĠContext , Ġprivate Ġval Ġattrs : ĠAttributeSet ? Ġ= Ġnull ) Ġ: ĠButton ( context , Ġattrs ) Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġfont Primary Type face : ĠType face ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġfont Secondary Type face : ĠType face ? Ġ= Ġnull ĊĊĠĠĠ Ġvar Ġtext Primary : ĠString Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġtext Secondary : ĠString ? Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġtext Primary Color : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġtext Secondary Color : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġtext Primary Size : ĠFloat Ġ= Ġ 0 . toFloat () ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġtext Secondary Size : ĠFloat Ġ= Ġ 0 . toFloat () ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġtext Extra Space : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġfont Primary Text : ĠString ? Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġfont Secondary Text : ĠString ? Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġtext Primary Style Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġtext Secondary Style Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit View () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( attrs Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġtyped Array Ġ= Ġcontext . obtain Styled Attributes ( attrs , ĠR . style able . Combined Button ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġtext Primary Ġ= Ġtyped Array . getString ( R . style able . Combined Button _ text Primary ) ĊĠĠĠĠĠĠĠ Ġtext Secondary Ġ= Ġtyped Array . getString ( R . style able . Combined Button _ text Secondary ) ĊĠĠĠĠĠĠĠ Ġtext Primary Color Ġ= Ġtyped Array . getColor ( R . style able . Combined Button _ text Primary Color , ĠColor . BLACK ) ĊĠĠĠĠĠĠĠ Ġtext Secondary Color Ġ= Ġtyped Array . getColor ( R . style able . Combined Button _ text Secondary Color , ĠColor . BLACK ) ĊĠĠĠĠĠĠĠ Ġtext Primary Size Ġ= Ġtyped Array . get Dimension ( R . style able . Combined Button _ text Primary Size , Ġresources . get Dimension Pixel Size ( R . dim en . combined _ text _ view _ default _ size ). toFloat ()) ĊĠĠĠĠĠĠĠ Ġtext Secondary Size Ġ= Ġtyped Array . get Dimension ( R . style able . Combined Button _ text Secondary Size , Ġresources . get Dimension Pixel Size ( R . dim en . combined _ text _ view _ default _ size ). toFloat ()) ĊĠĠĠĠĠĠĠ Ġtext Extra Space Ġ= Ġtyped Array . getInt ( R . style able . Combined Button _ text Extra Space , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġfont Primary Text Ġ= Ġtyped Array . getString ( R . style able . Combined Button _ font Primary Text ) ĊĠĠĠĠĠĠĠ Ġfont Secondary Text Ġ= Ġtyped Array . getString ( R . style able . Combined Button _ font Secondary Text ) ĊĠĠĠĠĠĠĠ Ġtext Primary Style Ġ= Ġtyped Array . getInt ( R . style able . Combined Button _ text Primary Style , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġtext Secondary Style Ġ= Ġtyped Array . getInt ( R . style able . Combined Button _ text Secondary Style , Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġtyped Array . recycle () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDisplay Ġin ĠLayout ĠEditor ĠPreview ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Finish Inf late () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Finish Inf late () ĊĠĠĠĠĠĠĠ Ġapply () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInf late ĠSp ann able String Ġusing Ġprovided Ġvalue Ġ( either ĠTyped Array ( XML ) Ġor Ġsetter ( Java ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġapply () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( text Primary . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( text Secondary Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Secondary Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġcontent String Ġ= Ġtext Primary ĊĠĠĠĠĠĠĠ Ġif Ġ( text Extra Space Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġtext Extra Space ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent String Ġ+= Ġ" Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcontent String Ġ+= Ġtext Secondary ĊĊĠĠĠĠĠĠĠ Ġval Ġprimary Span Ġ= ĠgetType face Span ( font Primary Text , Ġfont Primary Type face ) ĊĠĠĠĠĠĠĠ Ġval Ġsecondary Span Ġ= Ġ ĠgetType face Span ( font Secondary Text , Ġfont Secondary Type face ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠSp ann able StringBuilder ( content String ) ĊĠĠĠĠĠĠĠ Ġbuilder . clear Spans () ĊĊĠĠĠĠĠĠĠ Ġbuilder . setSize Span ( text Primary Size , Ġ 0 , Ġtext Primary . length ) ĊĠĠĠĠĠĠĠ Ġbuilder . setSize Span ( text Secondary Size , Ġtext Primary . length , Ġcontent String . length ) ĊĠĠĠĠĠĠĠ Ġbuilder . setColor Span ( text Primary Color , Ġ 0 , Ġtext Primary . length ) ĊĠĠĠĠĠĠĠ Ġbuilder . setColor Span ( text Secondary Color , Ġtext Primary . length , Ġcontent String . length ) ĊĠĠĠĠĠĠĠ Ġbuilder . setFont Span ( primary Span , Ġtext Primary Style , Ġ 0 , Ġtext Primary . length ) ĊĠĠĠĠĠĠĠ Ġbuilder . setFont Span ( secondary Span , Ġtext Secondary Style , Ġtext Primary . length , Ġcontent String . length ) ĊĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġbuilder ĊĠĠĠ Ġ} Ċ }