AndroidTV - 更改行标题的颜色[BrowseFragment]

时间:2017-09-13 13:14:29

标签: android android-tv browsefragment

我在SO中找到了类似的内容:android-tv Changing text color and font of browse fragment rows header

以下主题回答我想出了这个:

<style name="CustomRowHeaderStyle" parent="Widget.Leanback.Row.Header">
    <item name="android:textColor">@color/red</item>
</style>

但这不仅会更改显示在行上方的文本,还会更改导航抽屉文本。我很想得到第一个答案(导航抽屉项目标题有不同的颜色)。

1 个答案:

答案 0 :(得分:2)

如果我正确理解你的问题,你想在android leanback库的浏览器片段中更改行标题演示者的颜色。为此,您可以自己设计标题布局以实现此目标。 首先你需要设计一个自定义的Android布局,让我们称之为 custom_header_layout

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/text_view"
        android:text="sample_text"/>

</FrameLayout>

然后您需要创建新类并扩展ListRowPresenter以将标题布局设置为browserfragment,如下所示:

public class MainListRowPresenter extends ListRowPresenter {

    public MainListRowPresenter() {
        setHeaderPresenter(new MainRowHeaderPresenter(R.layout.custom_header_layout));
    }

    @Override
    protected void onBindRowViewHolder(RowPresenter.ViewHolder holder, Object item) {

    }
}

然后最后扩展RowHeaderPresenter并将数据设置为browserfragment中的标题:

public class MainRowHeaderPresenter extends RowHeaderPresenter {

        public MainRowHeaderPresenter(int layoutResourceId) {
            super(layoutResourceId);
        }

        @Override
        public void onBindViewHolder(Presenter.ViewHolder viewHolder, Object item) {
             //do something hear
        }
   }

有关详细信息,请查看这两篇精彩帖子BrowseFragment Header customizationBrowseFragment ListRow customization

希望这有助于:)