Как установить собственный шрифт в субтитры панели инструментов Android?

Я хочу получить текстовое представление субтитров на панели инструментов Android, чтобы изменить его шрифт. На самом деле я делаю это с заголовком, получая его таким образом:

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

Я пробовал с тем же кодом, но пытался получить "mSubtitleTextView", но это не решение.

Спасибо!!


person Mikel    schedule 14.04.2015    source источник
comment
Попробуйте с TypeFace   -  person Thomas Vos    schedule 14.04.2015
comment
Это то, что я пытаюсь, но мне нужен текстовый просмотр   -  person Mikel    schedule 14.04.2015
comment
Где заголовок, в панели действий?   -  person Thomas Vos    schedule 14.04.2015
comment
Я получаю это с кодом выше   -  person Mikel    schedule 14.04.2015
comment
Итак, теперь вы хотите изменить шрифт titleTextView?   -  person Thomas Vos    schedule 14.04.2015
comment
Я показываю, как я делаю то же самое для заголовка. Я хочу сделать это с субтитрами   -  person Mikel    schedule 14.04.2015


Ответы (2)


Вы можете получить подзаголовок TextView следующим образом:

View subTitleView = toolbar.getChildAt(1);

Если вы не добавляете никаких представлений на панель инструментов, его структура по умолчанию будет следующей:

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

Надеюсь, поможет!

person ARP    schedule 26.02.2016

Определенно не лучший способ, но в крайнем случае это сработает. Однако вам придется найти способ реализовать 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);
}
person squeeish    schedule 24.04.2015
comment
похоже, это не работает с заголовком, вы тоже работаете с отражением? - person Daniel Ocampo; 17.12.2015