首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >android-tv更改浏览片段行标题的文本颜色和字体

android-tv更改浏览片段行标题的文本颜色和字体
EN

Stack Overflow用户
提问于 2015-11-18 07:31:15
回答 3查看 8.1K关注 0票数 13

如何在浏览片段中更改行标题的文本颜色和字体?文本不是在菜单中,而是出现在行上方的文本。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-11-18 10:24:18

我假设您正在使用提供的android.support.v17.leanback.widget.RowHeaderPresenter作为BrowseFragment中的HeaderFragment的演示者。

RowHeaderPresenter膨胀来自R.layout.lb_row_header的布局,如下所示:

代码语言:javascript
复制
<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" />

如您所见,这使用了一个名为rowHeaderStyle的样式属性,它通常指向@style/Widget.Leanback.Row.Header。您可以通过在styles.xml中放置以下内容来覆盖这一点

代码语言:javascript
复制
<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>

然后将MyCustomBrowseStyle用于包含BrowseFragmentActivity,在AndroidManifest.xml中声明它。

票数 19
EN

Stack Overflow用户

发布于 2017-05-18 21:31:04

除了大卫的回答。

rowHeaderStyle将样式应用于HeaderFragment中的菜单项和RowFragment中的行标题(这两个片段构成了BrowseFragment)。

如果希望它们的样式(特别是字体颜色)不同,则可以重写BrowseFragment::onCreateHeadersFragment()并在此时应用特定的主题。

1)将这些样式添加到styles.xml中:

代码语言:javascript
复制
<style name="AppTheme.Leanback.Browse.Row" parent="@style/Theme.Leanback.Browse">
    <item name="rowHeaderStyle">@style/AppTheme.Leanback.Row</item>
</style>

<style name="AppTheme.Leanback.Browse.Header" parent="@style/AppTheme.Leanback.Browse.Row">
    <item name="rowHeaderStyle">@style/AppTheme.Leanback.Header</item>
</style>

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

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

2)将AppTheme.Leanback.Browse.Row主题应用于清单中的活动。

3)将AppTheme.Leanback.Browse.Header主题应用于BrowseFragment中的标题

代码语言:javascript
复制
// Kotlin snippet
override fun onCreateHeadersFragment() : HeadersFragment {
    class CustomHeadersFragment : HeadersFragment() {
        override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
            return super.onCreateView(
                    inflater.cloneInContext(ContextThemeWrapper(inflater.context, R.style.AppTheme_Leanback_Browse_Header)),
                    container,
                    savedInstanceState
            )
        }
    }

    return CustomHeadersFragment()
}
票数 6
EN

Stack Overflow用户

发布于 2016-04-22 08:09:26

david.mihola的答案有助于解决颜色问题,但是在全局设置自定义字体时仍然存在问题。对于所有遇到这个问题并对此感到困惑的人,以下是我的解决办法:

由于克里斯琴(书法)所做的出色工作,您可以轻松地设置全局(自定义)字体。

只需将书法添加到您的gradle.build中,并在您的Application.onCreate()中添加以下片段

代码语言:javascript
复制
CalligraphyConfig.initDefault(new CalligraphyConfig.Builder()
                        .setDefaultFontPath("fonts/MyCustomFont.ttf")
                        .setFontAttrId(R.attr.fontPath)
                        .build()
        );

在每项活动中增加以下内容:

代码语言:javascript
复制
@Override
protected void attachBaseContext(Context newBase) {
    super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));
}

这为我在每一个TextView上完成了字体技巧,而无需修改布局。书法的文献也提供了一些更多的可能性。看看这个。

我希望这能帮助其他人找到这个问题,并试图在全球范围内设置(自定义)字体。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33774150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档