Search code examples
android-tvleanback

android-tv Changing text color and font of browse fragment rows header


How to change text color and font of rows header in browse fragment?. The text not in menu but the text that appears above the rows.


Solution

  • I am assuming you are using the provided android.support.v17.leanback.widget.RowHeaderPresenter as the presenter for the HeaderFragment in your BrowseFragment.

    The RowHeaderPresenter inflates the layout from R.layout.lb_row_header which looks like this:

    <android.support.v17.leanback.widget.RowHeaderView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/row_header"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        style="?rowHeaderStyle" />
    

    As you can see, this uses a style attribute called rowHeaderStyle, which is normally pointing to @style/Widget.Leanback.Row.Header. You can override this by putting the following in your styles.xml:

    <style name="MyCustomRowHeaderStyle" parent="Widget.Leanback.Row.Header">
        <item name="android:textColor">@color/red</item>
    </style>
    
    <style name="MyCustomBrowseStyle" parent="Theme.Leanback.Browse">
        <item name="rowHeaderStyle">@style/MyCustomRowHeaderStyle</item>
    </style>
    

    And then use MyCustomBrowseStyle for the Activity containing the BrowseFragment by declaring it in your AndroidManifest.xml.