如何将自定义字体设置为 android 工具栏的字幕?

Posted

技术标签:

【中文标题】如何将自定义字体设置为 android 工具栏的字幕?【英文标题】:How to set custom font to android toolbar's subtitle? 【发布时间】:2015-04-14 16:44:10 【问题描述】:

我想在 android 的工具栏中获取字幕的 textview 以更改它的字体。其实我是用标题做的,这样写的:

Field f = toolbar.getClass().getDeclaredField("mTitleTextView");
f.setAccessible(true);
titleTextView = (TextView) f.get(toolbar);

我尝试使用相同的代码,但尝试获取“mSubtitleTextView”,但这不是解决方案。

谢谢!!

【问题讨论】:

用字体试试 这就是我正在尝试的,但我需要文本视图 标题在哪里,在操作栏中? 我用上面的代码搞定了 那么现在你想改变titleTextView的字体吗? 【参考方案1】:

你可以像这样获取字幕TextView:

View subTitleView = toolbar.getChildAt(1);

如果不给工具栏添加任何视图,他的默认结构是:

[0] - (TextView) title
[1] - (TextView) subtitle
[2] - (ActionMenuView) menu

希望对你有帮助!

【讨论】:

【参考方案2】:

绝对不是最好的方法,但在紧要关头这会奏效。不过,您必须想办法实现myTypefaceSpan;我正在使用Calligraphy,所以它对我来说很好地联系在一起。

CalligraphyTypefaceSpan myTypefaceSpan = new CalligraphyTypefaceSpan(
    TypefaceUtils.load(this.getAssets(), "fonts/custom_font.ttf"));

public static void setToolbarSubtitle(String subtitle, Context context) 
    SpannableStringBuilder sBuilder = new SpannableStringBuilder();
    sBuilder.append(subtitle);
    sBuilder.setSpan(MainActivity.myTypefaceSpan, 0, sBuilder.length(),
            Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

    ((MainActivity)context).getSupportActionBar().setSubtitle(sBuilder);

【讨论】:

这似乎不适用于标题,您是否也在使用反射?

以上是关于如何将自定义字体设置为 android 工具栏的字幕?的主要内容,如果未能解决你的问题,请参考以下文章

将自定义字体设置为微调器

如何将自定义字体应用于 TTTAttributedLabel

java 将自定义字体设置为所有textview

将自定义字体添加到 Xcode 13+

Android将自定义适配器设置为viewPager

如何将自定义输入法的偏好添加到 Android 设置应用程序?