Tier 3Roku. Focus is the stock MarkupList focus bitmap, fed put.io art and a generated token. The rows draw nothing for focus themselves.DesignTokens.brs · focus · transparent
Row focusMarkupList focusBitmapUristock node, put.io art
Every list sets focusBitmapUri to list-item-focus.9.png with drawFocusFeedbackOnTop="false", then blends it with focus. The row components carry a FocusBackground node, but updateFocus keeps it hidden; only the lab build shows it.
The.Wire.S03E04.Back.Burners.1080p.BluRay.x264-DEMAND.mkv
3 GB - May 2, 2026
UnfocusedNo fill. The row carries no chrome of its own
The.Wire.S03E04.Back.Burners.1080p.BluRay.x264-DEMAND.mkv
3 GB - May 2, 2026
FocusedOne tinted nine-patch under the row. Nothing moves
artimages/list-item-focus.9.png, nine-patch
tintfocusBitmapBlendColor = focus (componentBgActive)
sizethe list stretches it to itemSize: 1716x120, or 960x120 in Search
cornerbaked into the nine-patch art. Not --radius-tv. listItemFocusCornerRadius() only feeds a slice fallback no row uses
no borderuiBorderWidth() (3px) is for dialog panels and the header divider. Not the row
footprintsearch history sets focusFootprintBitmapUri to a transparent pixel and focusFootprintBlendColor to transparent
Do not. Draw a focus border on a list row, or add a scale to imitate tvOS. The row's focus is one tinted bitmap; the z-axis does not exist here.
Contract: platforms/roku/DESIGN.md