如何在 android tv 的详细概述中更改操作项的文本颜色/样式

Posted

技术标签:

【中文标题】如何在 android tv 的详细概述中更改操作项的文本颜色/样式【英文标题】:How to change text color / style for action items in details overview for android tv 【发布时间】:2017-07-07 13:09:34 【问题描述】:

在使用leanback库的android tv中,我们将按钮文本作为CharSequence传递以填充详细信息概述中的操作项:new Action(long id, CharSequence label1, CharSequence label2, Drawable icon)

这里有一点上下文:如果您访问电影的详细信息页面(例如,到达),您会注意到操作按钮:“观看预告片”、“以 10.00 美元租用”、“以 20.00 美元购买”

我正在研究更改这些操作项的文本颜色/文本样式的方法,但到目前为止还没有成功。

有什么想法吗?

这是我的代码的 sn-p:

 SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(price);
 spannableStringBuilder.setSpan(new ForegroundColorSpan(Color.RED), 0, spannableStringBuilder.length(), 0);
 addDetailsOverviewRowButton(1, "OWN FROM", html.fromHtml(spannableStringBuilder.toString()), getResources().getDrawable(R.drawable.xyz, null));

【问题讨论】:

您的代码看起来像什么不起作用?请提供一个 Minimal, Complete, and Verifiable example 来证明该问题。您也可以查看SO post 以供参考。 abielita,您的参考与我想要完成的有点不同。此外,我希望能够更改特定操作项的文本样式。不过,谢谢。 【参考方案1】:

使用父 Theme.Leanback.Details 创建样式,您可以将项目添加为

<item name="detailsActionButtonStyle">@style/Theme.Detail.Action</item>

然后按照上面的项目创建另一个样式。

<style name="Theme.Detail.Action" parent="TextAppearance.Leanback.DetailsActionButton">
        <item name="android:textColor">@color/detail_action_text_color</item>
        <item name="android:textAppearance">@style/TextAppearance.Leanback.DetailsActionButton
        </item>
        <item name="android:background">@drawable/detail_action_selector</item>
     </style>

这里,detail_action_selector 是可绘制的文件,它改变动作聚焦和不聚焦的背景。

【讨论】:

以上是关于如何在 android tv 的详细概述中更改操作项的文本颜色/样式的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

更改 Android TV 应用程序的日期选择器 UI

焦点更改时强制 RecyclerView 滚动(Android TV)

如何将 Android TV 库添加到 Cordova 项目?