首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >XML中的字体:不应用于工具栏

XML中的字体:不应用于工具栏
EN

Stack Overflow用户
提问于 2017-10-26 14:35:33
回答 4查看 3.5K关注 0票数 6

我正在使用XML特性中的新字体,这是在Android8.0Oreo和Support 26.1.0中引入的。通过在应用程序主题中设置android:fontFamily属性,应用整个应用程序的默认字体系列:

代码语言:javascript
运行
复制
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
     ...
    <item name="android:fontFamily">@font/proxima_nova</item>
</style>

字体正确地应用于应用程序中的所有视图,但工具栏除外。所有工具栏都继续使用Roboto字体:

更新:这个问题似乎在支持库27.0.0中得到了解决。我不能再复制它了。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-10-27 17:02:17

我还没有在所有Android版本上进行测试,但这似乎奏效了:

代码语言:javascript
运行
复制
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
     ...
    <item name="android:fontFamily">@font/proxima_nova</item>
    <item name="toolbarStyle">@style/AppTheme.Toolbar</item>
</style>

<style name="AppTheme.Toolbar" parent="Widget.AppCompat.Toolbar">
    <item name="titleTextAppearance">@style/AppTheme.ToolbarTextStyle</item>
</style>

<style name="AppTheme.ToolbarTextStyle" parent="TextAppearance.Widget.AppCompat.Toolbar.Title">
    <item name="android:fontFamily">@font/proxima_nova</item>
    <item name="fontFamily">@font/proxima_nova</item>
</style>
票数 10
EN

Stack Overflow用户

发布于 2018-04-17 06:35:43

我花了很长时间来解决这个问题(即使使用了27.1.0)。所以,这是我的解决方案:

代码语言:javascript
运行
复制
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="android:fontFamily">@font/proxima_nova</item> <!-- Default app font -->
    <item name="actionBarStyle">@style/Custom.ActionBar</item>
</style>

<style name="Custom.ActionBar" parent="Widget.AppCompat.ActionBar">
    <item name="background">@color/colorPrimary</item>
    <item name="titleTextStyle">@style/Custom.ActionBar.Title</item>
</style>

<style name="Custom.ActionBar.Title" parent="TextAppearance.AppCompat.Widget.ActionBar.Title">
    <item name="android:fontFamily">@font/proxima_nova_bold</item>
</style>

如您所见,我没有引用Toolbar,而是通过引用ActionBar来工作。在上面,整个应用程序的默认字体是Proxima (常规的),而Toolbar/Action设置为。

一些上下文:

在我的生活中,我无法让自定义字体使用字体xml (在这里,您应该将普通和斜体字体设置为常规和粗体)。因此,代码中的@font/proxima_nova_bold链接到字体文件本身,res/font/proxima_nova_bold.ttf,它工作得很好。

票数 1
EN

Stack Overflow用户

发布于 2017-11-01 09:02:40

我使用这个util方法将不同字体的标题设置为操作栏:

代码语言:javascript
运行
复制
public static CharSequence createSpannableActionBarTitle(Context context, CharSequence title) {
    SpannableString spannedTitle = new SpannableString(title);

    int titleColor = context.getResources().getColor(R.color.white);
    spannedTitle.setSpan(new ForegroundColorSpan(titleColor), 0, spannedTitle.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    spannedTitle.setSpan(new TypefaceSpan(context, R.string.Roboto_Medium), 0, spannedTitle.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

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

https://stackoverflow.com/questions/46957146

复制
相关文章

相似问题

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