Шрифты Google, не работающие из файла макета Android XML (иногда), должны быть установлены программно через ResourcesCompat.getFont

Google недавно сделал Google Fonts доступными для использования в Android, и это здорово! Самый простой / самый простой способ применить шрифт к TextView (при условии, что шрифт уже существует в папке ресурсов шрифта, что очень легко сделать, выбрав TextView в окне дизайна), - применить его непосредственно к XML TextView как таковой

    <TextView
        android:id="@+id/my_text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:fontFamily="@font/montserrat" />

Это отлично работало в первом упражнении, в котором я его пробовал, но затем, когда я попытался использовать точно такую ​​же настройку во втором упражнении, это не удалось. Шрифты не будут считываться из свойства XML android:fontFamilyдаже для тех же самых шрифтов, которые я использовал в предыдущем упражнении.

К счастью, я все еще смог заставить работать шрифты, настроив их программно следующим образом

@FontRes private static final int TITLE_FONT = R.font.acme;
@FontRes private static final int SUBTITLE_FONT = R.font.acme;
@FontRes private static final int TEXT_FONT = R.font.ubuntu;
@FontRes private static final int VIEW_LISTING_FONT = R.font.nunito;

    Typeface titleTypeface = ResourcesCompat.getFont(this, TITLE_FONT);
    Typeface subtitleTypeface = ResourcesCompat.getFont(this, SUBTITLE_FONT);
    Typeface textTypeface = ResourcesCompat.getFont(this, TEXT_FONT);
    Typeface viewListingTypeface = ResourcesCompat.getFont(this, VIEW_LISTING_FONT);
    _businessOwnerView.setTypeface(titleTypeface);
    _businessNameView.setTypeface(subtitleTypeface);
    _descriptionView.setTypeface(textTypeface);
    _viewListingButton.setTypeface(viewListingTypeface);

Но это боль и становится громоздким. Я думаю, что я просто собираюсь создать подкласс TextView и самостоятельно прочитать шрифты, чтобы я мог снова использовать их в XML, так как чувствую, что это ошибка (учитывая, что она работала в одном действии, а не в другом, а также потому, что это относительно новая функция) но хотелось бы узнать, сталкивался ли кто-нибудь еще с этой проблемой или есть идеи для ее решения?

0 ответов

Другие вопросы по тегам