Android TV,如何更改标题的颜色和标题的颜色?

Posted

技术标签:

【中文标题】Android TV,如何更改标题的颜色和标题的颜色?【英文标题】:Android TV, how to change color of title and color of headeritem? 【发布时间】:2017-06-06 10:10:31 【问题描述】:

我想更改标题颜色(Hello android TV!)和行颜色的标题项(GridItemPresenter)。

【问题讨论】:

此链接可能对您有所帮助:***.com/questions/33774150/… 谢谢,这个链接帮助。 android-tv Changing text color and font of browse fragment rows header的可能重复 【参考方案1】:

要更改列表行标题样式,您必须使用自定义ListRowPresenter:

public class CustomListRowPresenter extends ListRowPresenter 
    public CustomListRowPresenter() 
        super();
        setHeaderPresenter(new CustomRowHeaderPresenter());
    


public class CustomRowHeaderPresenter extends RowHeaderPresenter 
    @Override
    public Presenter.ViewHolder onCreateViewHolder(ViewGroup parent) 
        Presenter.ViewHolder viewHolder = super.onCreateViewHolder(parent);
        RowHeaderView rowHeaderView = (RowHeaderView) viewHolder.view;
        rowHeaderView.setTypeface(...);
        rowHeaderView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, ...);
        return viewHolder;
    

没有任何直接使用 BrowseFragment 的经验,但我希望也有某种自定义演示者。

【讨论】:

获得了 (RowHeaderView) viewHolder.view 的 ClassCastException。无法将 RelativeLayout 转换为 RowHeaderView。我错过了什么?我对 Leanback 比较陌生:P @Krrishnaaaa 我想,内部视图层次结构可以从 Leanback 版本更改为版本。我想您需要探索视图树并找到 RowHeaderView 的位置(如果它不再存在)。 谢谢.. 但我想知道是否有任何选项可以将我的自定义视图传递给这个标题?如果有,那么它将是更优的解决方案。我正在寻找那个解决方案。 我最近没有检查,但我认为答案是否定的。 Leanback 允许很少的定制 谢谢,我也有同样的想法。【参考方案2】:
public class CustomListRowPresenter extends ListRowPresenter 
    public CustomListRowPresenter() 
        super();
        setHeaderPresenter(new CustomRowHeaderPresenter());
    


class CustomRowHeaderPresenter extends RowHeaderPresenter 

    @Override
    public void onBindViewHolder(Presenter.ViewHolder viewHolder, Object item) 
        HeaderItem headerItem = item == null ? null : ((Row) item).getHeaderItem();
        RowHeaderPresenter.ViewHolder vh = (RowHeaderPresenter.ViewHolder) viewHolder;
        TextView title = vh.view.findViewById(R.id.row_header);
        if(!TextUtils.isEmpty(headerItem.getName())) 
            title.setText(headerItem.getName());
            title.setTextColor(ContextCompat.getColor(FiosTVApplication.getAppContext(),
                    R.color.white));
            title.setTypeface(ResourcesCompat.getFont(title.getContext(), R.font.nhaasgroteskdsstd_bold));
            title.setTextSize(TypedValue.COMPLEX_UNIT_SP,16);
        
    

【讨论】:

【参考方案3】:

另一种为标题文本设置颜色的简单方法是在 xml 中覆盖倾斜颜色:

<color name="lb_browse_header_color">#f00</color>

优点/缺点:它为所有标题设置颜色。

【讨论】:

以上是关于Android TV,如何更改标题的颜色和标题的颜色?的主要内容,如果未能解决你的问题,请参考以下文章

android studio黑色主题怎么设置字体颜色

如何在android中更改切换按钮颜色

Android TV:如何通知 Card Presenter 项目更改

如何在 PlaybackTransportControlGlue android TV 上动态更改字幕

如何在 Android TV 上以编程方式更改电视频道

如何更改 HTML 页面的背景颜色以进行打印?