/* Ċ Ġ* ĠCopyright Ġ( c ) ĠMicrosoft ĠCorporation . ĠAll Ġrights Ġreserved . Ċ Ġ* ĠLicensed Ġunder Ġthe ĠMIT ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . microsoft . fluent ui . list item Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . annotation . Color Int Ċ import Ġandroidx . core . widget . TextView Compat Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroid . widget . Relative Layout Ċ import Ġandroid . widget . TextView Ċ import Ġcom . microsoft . fluent ui . the ming . Fluent UI Context Theme Wrapper Ċ import Ġcom . microsoft . fluent ui . util . Theme Util Ċ import Ġcom . microsoft . fluent ui . util . setContent AndUpdate Visibility Ċ import Ġcom . microsoft . fluent ui . view . Template View Ċ Ċ /** Ċ Ġ* ĠSub Ġheader Ġfor Ġlist Ġsections Ġwith Ġa Ġstyled Ġtitle Ġview Ġand Ġ[ custom Access ory View ]. Ċ Ġ* Ċ Ġ* ĠTODO Ġadd Ġexamples Ġin Ġthe Ġdemo Ġfor Ġ[ title Color ] Ġand Ġ[ custom Access ory View ]. Ċ Ġ*/ Ċ class ĠList Sub Header View Ġ: ĠTemplate View Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠDEFAULT _ TITLE _ COLOR Ġ= ĠTitle Color . PRIMARY ĊĠĠĠĠĠĠĠ Ġval ĠDEFAULT _ TRUNC ATION Ġ= ĠText Utils . Truncate At . END ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠTitle Color Ġ{ ĊĠĠĠĠĠĠĠ ĠPRIMARY , ĠSE COND ARY , ĠTER TI ARY ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠText Ġfor Ġthe Ġtitle Ġview Ġthat Ġwill Ġbe Ġdisplayed Ġat Ġthe Ġstart Ġof Ġthe Ġ[ List Sub Header View ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġtitle : ĠString Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Ġ== Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Template () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSets Ġthe Ġtext Ġcolor Ġfor Ġthe Ġtitle Ġview . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġtitle Color : ĠTitle Color Ġ= ĠDEFAULT _ TITLE _ COLOR ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Ġ== Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Template () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSets Ġthe Ġtext Ġtrunc ation Ġfor Ġthe Ġtitle Ġview . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġtitle Truncate At : ĠText Utils . Truncate At Ġ= ĠDEFAULT _ TRUNC ATION ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Ġ== Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Template () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġview Ġwill Ġbe Ġdisplayed Ġat Ġthe Ġend Ġof Ġthe Ġ[ List Sub Header View ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġcustom Access ory View : ĠView ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Ġ== Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreset Custom Access ory View Padding () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Custom Access ory View Padding () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Template () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSets Ġthe Ġbackground Ġcolor . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Color Int ĊĠĠĠ Ġvar Ġbackground : ĠInt Ġ= ĠTheme Util . get Theme Attr Color ( context , ĠR . attr . fluent ui ListItem BackgroundColor ) ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Ġ== Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Template () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġcustom Access ory View Original Padding Start : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġcustom Access ory View Original Padding Top : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġcustom Access ory View Original Padding End : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġcustom Access ory View Original Padding Bottom : ĠInt Ġ= Ġ 0 ĊĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ? Ġ= Ġnull , Ġdef Style Attr : ĠInt Ġ= Ġ 0 ) Ġ: Ġsuper ( Fluent UI Context Theme Wrapper ( context , R . style . Theme _ Fluent UI _ ListItem ), Ġattrs , Ġdef Style Attr ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTODO : ĠAdd Ġneed Ġexamples Ġin Ġthe Ġdemo Ġthat Ġtests Ġthese Ġattributes . ĠCan Ġinf late Ġa Ġlayout Ġin Ġthe Ġadapter . ĊĠĠĠĠĠĠĠ Ġval Ġstyled Attrs Ġ= Ġcontext . obtain Styled Attributes ( attrs , ĠR . style able . List Sub Header View ) ĊĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġstyled Attrs . getString ( R . style able . List Sub Header View _ fluent ui _ title ) Ġ?: Ġ"" ĊĊĠĠĠĠĠĠĠ Ġval Ġtitle Color Ordinal Ġ= Ġstyled Attrs . getInt ( R . style able . List Sub Header View _ fluent ui _ title Color , ĠDEFAULT _ TITLE _ COLOR . ordinal ) ĊĠĠĠĠĠĠĠ Ġtitle Color Ġ= ĠTitle Color . values ()[ title Color Ordinal ] ĊĊĠĠĠĠĠĠĠ Ġval Ġtitle Truncate At Ordinal Ġ= Ġstyled Attrs . getInt ( R . style able . List Sub Header View _ fluent ui _ title Truncate At , ĠDEFAULT _ TRUNC ATION . ordinal ) ĊĠĠĠĠĠĠĠ Ġtitle Truncate At Ġ= ĠText Utils . Truncate At . values ()[ title Truncate At Ordinal ] ĊĊĠĠĠĠĠĠĠ Ġstyled Attrs . recycle () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠTemplate ĊĊĠĠĠ Ġoverride Ġval Ġtemplate Id : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠR . layout . view _ list _ sub _ header ĊĊĠĠĠ Ġprivate Ġvar Ġtitle View : ĠTextView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġcustom Access ory View Container : ĠRelative Layout ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġon Template Loaded () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Template Loaded () ĊĊĠĠĠĠĠĠĠ Ġtitle View Ġ= Ġfind View In Template ById ( R . id . list _ sub _ header _ title ) ĊĠĠĠĠĠĠĠ Ġcustom Access ory View Container Ġ= Ġfind View In Template ById ( R . id . list _ sub _ header _ custom _ access ory _ view _ container ) ĊĊĠĠĠĠĠĠĠ Ġupdate Template () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Template () Ġ{ ĊĠĠĠĠĠĠĠ Ġupdate Title View () ĊĠĠĠĠĠĠĠ Ġcustom Access ory View Container ?. setContent AndUpdate Visibility ( custom Access ory View ) ĊĠĠĠĠĠĠĠ Ġset BackgroundColor ( background ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Title View () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtitle View Ġ= Ġtitle View Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġtitle View . text Ġ= Ġtitle ĊĠĠĠĠĠĠĠ Ġtitle View . el lip size Ġ= Ġtitle Truncate At ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( title Color ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTitle Color . PRIMARY Ġ-> ĠTextView Compat . setText Appearance ( title View , ĠR . style . TextAppearance _ Fluent UI _ List Sub Header Title _ Primary ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTitle Color . SECOND ARY Ġ-> ĠTextView Compat . setText Appearance ( title View , ĠR . style . TextAppearance _ Fluent UI _ List Sub Header Title _ Secondary ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTitle Color . TER TI ARY Ġ-> ĠTextView Compat . setText Appearance ( title View , ĠR . style . TextAppearance _ Fluent UI _ List Sub Header Title _ T ert i ary ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġlp Ġ= Ġtitle View . layout Params Ġas ĠLinearLayout . LayoutParams ĊĠĠĠĠĠĠĠ Ġlp . margin End Ġ= Ġif Ġ( custom Access ory View Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresources . get Dimension ( R . dim en . fluent ui _ list _ item _ horizontal _ margin _ regular ). toInt () ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreset Custom Access ory View Padding () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠReset Ġp add ings Ġwith Ġcached Ġvalues Ġto Ġensure Ġp add ings Ġset Ġin Ġupdate Custom Access ory View Padding ĊĠĠĠĠĠĠĠ Ġ// Ġonly Ġget Ġadjusted Ġonce Ġ( which Ġis Ġan Ġissue Ġin ĠRe cycler Views ). ĊĠĠĠĠĠĠĠ Ġcustom Access ory View ?. set Padding Relative ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcustom Access ory View Original Padding Start , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcustom Access ory View Original Padding Top , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcustom Access ory View Original Padding End , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcustom Access ory View Original Padding Bottom ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Custom Access ory View Padding () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcustom Access ory View Ġ= Ġcustom Access ory View Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġ// ĠCache Ġoriginal Ġp add ings Ġto Ġpreserve Ġp add ings Ġset Ġby Ġthe Ġconsumer . ĊĠĠĠĠĠĠĠ Ġcustom Access ory View Original Padding Start Ġ= Ġcustom Access ory View . padding Start ĊĠĠĠĠĠĠĠ Ġcustom Access ory View Original Padding Top Ġ= Ġcustom Access ory View . padding Top ĊĠĠĠĠĠĠĠ Ġcustom Access ory View Original Padding End Ġ= Ġcustom Access ory View . padding End ĊĠĠĠĠĠĠĠ Ġcustom Access ory View Original Padding Bottom Ġ= Ġcustom Access ory View . padding Bottom ĊĊĠĠĠĠĠĠĠ Ġ// ĠUse Ġpadding Ġinstead Ġof Ġmargins Ġhere Ġto Ġincrease Ġtouch Ġarea Ġfor Ġpotential Ġclick Ġlisteners . ĊĠĠĠĠĠĠĠ Ġval Ġvertical Padding Ġ= Ġresources . get Dimension ( R . dim en . fluent ui _ list _ item _ vertical _ margin _ custom _ view _ minimum ). toInt () ĊĠĠĠĠĠĠĠ Ġval Ġpadding Start Ġ= Ġresources . get Dimension ( R . dim en . fluent ui _ list _ item _ horizontal _ spacing _ custom _ access ory _ view _ start ). toInt () ĊĠĠĠĠĠĠĠ Ġval Ġpadding End Ġ= Ġresources . get Dimension ( R . dim en . fluent ui _ list _ item _ horizontal _ margin _ regular ). toInt () ĊĠĠĠĠĠĠĠ Ġcustom Access ory View . set Padding Relative ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcustom Access ory View . padding Start Ġ+ Ġpadding Start , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcustom Access ory View . padding Top Ġ+ Ġvertical Padding , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcustom Access ory View . padding End Ġ+ Ġpadding End , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcustom Access ory View . padding Bottom Ġ+ Ġvertical Padding ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }