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

时间:2015-04-14 16:44:10

标签: android fonts toolbar subtitle

我想在android的工具栏中获取字幕的textview来改变它的字体。实际上我正在用标题来做这件事:

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

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

谢谢!

2 个答案:

答案 0 :(得分:4)

您可以像这样获得字幕TextView:

View subTitleView = toolbar.getChildAt(1);

如果您没有向工具栏添加任何视图,则其默认结构为:

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

希望它有所帮助!

答案 1 :(得分:1)

绝对不是最好的方式,但在紧要关头这将有效。您必须找到实现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);
}