Theming
The control chrome is fully themeable through the UI config: a color token set (accent, track colors, surfaces, text tiers…), a dimension set (button sizes, track heights, insets — with automatic fullscreen step-up), replaceable icons for every glyph, and title text styling.
OGUiConfig.Builder() .setControlColors(OGControlColors(accent = Color(0xFF7BD88F))) .setProgressColors(played = Color.White, track = Color.DarkGray, scrubber = Color.White) .setPlayIcon(R.drawable.my_play) .setSeekForwardIcon(R.drawable.my_ff) .setTitleTextStyle(TextStyle(fontSize = 20.sp, fontWeight = FontWeight.Bold)) .build()var config = OGUIConfig()config.colors.accent = Color(red: 0.48, green: 0.85, blue: 0.56)config.dimens = OGControlDimens() // or your own valuesconfig.playIcon = Image("myPlay")config.seekForwardIcon = Image("myFF")config.titleFont = .system(size: 20, weight: .bold)el.config = { colors: { accent: "#7BD88F", trackPlayed: "#FFFFFF" }, // partial merge dimens: { playButtonSize: 64 }, playIconSvg: mySvg.play, seekForwardIconSvg: mySvg.ff, titleStyle: "font-size: 20px; font-weight: 700;",};What’s replaceable: play/pause/replay, seek forward/back, fullscreen enter/exit, subtitles, audio, speed, quality, volume states and the ad transport glyphs. What’s deliberately not configurable: content-rating position (fixed top-right by Kijkwijzer convention), the LIVE chip’s presence on live streams, and the trial watermark (a license removes it).
Your own error copy belongs to theming too — see error handling.