Skip to content

Instantly share code, notes, and snippets.

@Repflez
Created November 2, 2022 05:33
Show Gist options
  • Save Repflez/85c672cdd825adb798334a9e3b561ffa to your computer and use it in GitHub Desktop.
Save Repflez/85c672cdd825adb798334a9e3b561ffa to your computer and use it in GitHub Desktop.
Cursed way to use Material elements in Android Leanback
<resources>
<!-- AKA copying the entire Theme.AppCompat.Leanback theme hierarchy in one place -->
<style name="AppTheme.CursedLeanback" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<item name="playbackProgressPrimaryColor">?android:attr/colorAccent</item>
<item name="playbackControlsIconHighlightColor">?android:attr/colorAccent</item>
<item name="defaultBrandColor">?android:attr/colorPrimary</item>
<item name="android:colorPrimary">@color/lb_default_brand_color</item>
<item name="defaultBrandColorDark">?android:attr/colorPrimaryDark</item>
<item name="android:colorPrimaryDark">@color/lb_default_brand_color_dark</item>
<item name="android:windowOverscan">true</item>
<item name="guidedStepTheme">@style/Theme.AppCompat.Leanback.GuidedStep</item>
<item name="android:windowSharedElementEnterTransition">@transition/lb_shared_element_enter_transition</item>
<item name="android:windowSharedElementReturnTransition">@transition/lb_shared_element_return_transition</item>
<item name="android:windowEnterTransition">@transition/lb_enter_transition</item>
<item name="android:windowReturnTransition">@transition/lb_return_transition</item>
<item name="android:windowTransitionBackgroundFadeDuration">350</item>
<item name="baseCardViewStyle">@style/Widget.Leanback.BaseCardViewStyle</item>
<item name="imageCardViewStyle">@style/Widget.Leanback.ImageCardViewStyle</item>
<item name="imageCardViewImageStyle">@style/Widget.Leanback.ImageCardView.ImageStyle</item>
<item name="imageCardViewTitleStyle">@style/Widget.Leanback.ImageCardView.TitleStyle</item>
<item name="imageCardViewContentStyle">@style/Widget.Leanback.ImageCardView.ContentStyle</item>
<item name="imageCardViewBadgeStyle">@style/Widget.Leanback.ImageCardView.BadgeStyle</item>
<item name="imageCardViewInfoAreaStyle">@style/Widget.Leanback.ImageCardView.InfoAreaStyle</item>
<item name="browsePaddingStart">@dimen/lb_browse_padding_start</item>
<item name="browsePaddingEnd">@dimen/lb_browse_padding_end</item>
<item name="browsePaddingTop">@dimen/lb_browse_padding_top</item>
<item name="browsePaddingBottom">@dimen/lb_browse_padding_bottom</item>
<item name="browseRowsMarginStart">@dimen/lb_browse_rows_margin_start</item>
<item name="browseRowsMarginTop">@dimen/lb_browse_rows_margin_top</item>
<item name="browseRowsFadingEdgeLength">@dimen/lb_browse_rows_fading_edge</item>
<item name="headersVerticalGridStyle">@style/Widget.Leanback.Headers.VerticalGridView</item>
<item name="headerStyle">@style/Widget.Leanback.Header</item>
<item name="sectionHeaderStyle">@style/Widget.Leanback.Header.Section</item>
<item name="rowsVerticalGridStyle">@style/Widget.Leanback.Rows.VerticalGridView</item>
<item name="rowHorizontalGridStyle">@style/Widget.Leanback.Row.HorizontalGridView</item>
<item name="itemsVerticalGridStyle">@style/Widget.Leanback.GridItems.VerticalGridView</item>
<item name="browseTitleViewLayout">@layout/lb_browse_title</item>
<item name="browseTitleTextStyle">@style/Widget.Leanback.Title.Text</item>
<item name="browseTitleIconStyle">@style/Widget.Leanback.Title.Icon</item>
<item name="browseTitleViewStyle">@style/Widget.Leanback.TitleView</item>
<item name="rowHeaderStyle">@style/Widget.Leanback.Row.Header</item>
<item name="rowHeaderDescriptionStyle">@style/Widget.Leanback.Row.Header.Description</item>
<item name="rowHoverCardTitleStyle">@style/Widget.Leanback.Row.HoverCardTitle</item>
<item name="rowHoverCardDescriptionStyle">@style/Widget.Leanback.Row.HoverCardDescription</item>
<item name="rowHeaderDockStyle">@style/Widget.Leanback.Row.HeaderDock</item>
<item name="searchOrbViewStyle">@style/Widget.Leanback.SearchOrbViewStyle</item>
<item name="detailsDescriptionTitleStyle">@style/Widget.Leanback.DetailsDescriptionTitleStyle</item>
<item name="detailsDescriptionSubtitleStyle">@style/Widget.Leanback.DetailsDescriptionSubtitleStyle</item>
<item name="detailsDescriptionBodyStyle">@style/Widget.Leanback.DetailsDescriptionBodyStyle</item>
<item name="detailsActionButtonStyle">@style/Widget.Leanback.DetailsActionButtonStyle</item>
<item name="playbackPaddingStart">@dimen/lb_playback_controls_margin_start</item>
<item name="playbackPaddingEnd">@dimen/lb_playback_controls_margin_end</item>
<item name="playbackMediaItemPaddingStart">@dimen/lb_playback_media_row_horizontal_padding</item>
<item name="playbackMediaListHeaderStyle">@style/Widget.Leanback.PlaybackMediaListHeaderStyle</item>
<item name="playbackMediaItemRowStyle">@style/Widget.Leanback.PlaybackMediaItemRowStyle</item>
<item name="playbackMediaItemSeparatorStyle">@style/Widget.Leanback.PlaybackMediaItemSeparatorStyle</item>
<item name="playbackMediaListHeaderTitleStyle">@style/Widget.Leanback.PlaybackMediaListHeaderTitleStyle</item>
<item name="playbackMediaItemDetailsStyle">@style/Widget.Leanback.PlaybackMediaItemDetailsStyle</item>
<item name="playbackMediaItemNumberViewFlipperStyle">@style/Widget.Leanback.PlaybackMediaItemNumberViewFlipperStyle</item>
<item name="playbackMediaItemNumberViewFlipperLayout">@layout/lb_media_item_number_view_flipper</item>
<item name="playbackMediaItemNumberStyle">@style/Widget.Leanback.PlaybackMediaItemNumberStyle</item>
<item name="playbackMediaItemNameStyle">@style/Widget.Leanback.PlaybackMediaItemNameStyle</item>
<item name="playbackMediaItemDurationStyle">@style/Widget.Leanback.PlaybackMediaItemDurationStyle</item>
<item name="playbackControlsButtonStyle">@style/Widget.Leanback.PlaybackControlsButtonStyle</item>
<item name="playbackControlButtonLabelStyle">@style/Widget.Leanback.PlaybackControlLabelStyle</item>
<item name="playbackControlsTimeStyle">@style/Widget.Leanback.PlaybackControlsTimeStyle</item>
<item name="playbackControlsActionIcons">@style/Widget.Leanback.PlaybackControlsActionIconsStyle</item>
<item name="playbackControlsAutoHideTimeout">@integer/lb_playback_controls_show_time_ms</item>
<item name="playbackControlsAutoHideTickleTimeout">@integer/lb_playback_controls_tickle_timeout_ms</item>
<item name="errorMessageStyle">@style/Widget.Leanback.ErrorMessageStyle</item>
<item name="defaultSearchColor">@color/lb_default_search_color</item>
<item name="defaultSearchIconColor">@color/lb_default_search_icon_color</item>
<item name="defaultSearchBrightColor">?attr/defaultSearchColor</item>
<item name="defaultSearchIcon">@drawable/lb_ic_in_app_search</item>
<item name="defaultSectionHeaderColor">?attr/defaultSearchColor</item>
<item name="overlayDimMaskColor">@color/lb_view_dim_mask_color</item>
<item name="overlayDimActiveLevel">@fraction/lb_view_active_level</item>
<item name="overlayDimDimmedLevel">@fraction/lb_view_dimmed_level</item>
<item name="pickerStyle">@style/Widget.Leanback.PickerStyle</item>
<item name="datePickerStyle">@style/Widget.Leanback.PickerStyle.DatePickerStyle</item>
<item name="timePickerStyle">@style/Widget.Leanback.PickerStyle.TimePickerStyle</item>
<item name="pinPickerStyle">@style/Widget.Leanback.PickerStyle.PinPickerStyle</item>
</style>
<style name="AppTheme.Leanback" parent="AppTheme.CursedLeanback">
<!-- Your overrides here -->
</style>
</resources>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment