谷歌最近让谷歌字体可以在 Android 中使用,这太棒了!将字体应用于 TextView 的最简单/最直接的方法(假设字体已存在于字体资源文件夹中,通过在设计窗口中选择 TextView 非常容易)是将其直接应用于像这样的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 中再次使用它们,因为我觉得这是一个错误(考虑到它在一个活动而不是另一个活动中工作,而且因为这是一个相对较新的功能) 但想知道是否有其他人遇到过这个问题或有任何解决方案的想法?