在API中使用XML中的字体< 26

时间:2017-06-12 17:58:16

标签: android fonts

https://developer.android.com/preview/features/working-with-fonts.html

Android API 26支持此功能,但是我们是否有支持库可以将字体用作res中的资源? [font in XML]如果是,那么它支持哪种API?

我在谈论Android O SDK功能,它允许我们在上面的链接中给出XML格式。这不是MM中的原生功能我敢肯定。

5 个答案:

答案 0 :(得分:27)

据Google称,只要满足以下条件, Android 4.0+(API 14 +)就支持

  • 您使用的是支持库版本 26.0.0-beta1 或更高版本
  • 您正在使用 AppCompat

来源:

Fonts in XML - Using the support library

Support Library revision history

我希望我可以在早于8的Android版本(API 26)的app小部件中使用它,但是这是不可能的,因为AppCompatTextView不能在app小部件中使用。在XML'中没有第三方替代Android O'字体。例如Caligraphy库在app小部件中工作。

app小部件的唯一替代方法是使用 ImageView 而不是 TextView 并使用 RemoteViews 方法,例如 setImageViewUri(。 ..) setImageViewBitmap(...),这两个都有问题。

答案 1 :(得分:16)

要支持from django.db import migrations def set_subject(apps, schema_editor): Apple = apps.get_model('yourappname', 'Apple') for a in Apple.objects.all(): a.subject = a.text a.save() class Migration(migrations.Migration): dependencies = [ ('yourappname', 'name of above migration file'), ] operations = [ migrations.RunPython(set_subject), ] 低于26的字体系列,我们需要使用

API

而不是

<font app:fontStyle="normal" app:fontWeight="400" app:font="@font/myfont-Regular"/>

答案 2 :(得分:10)

要完成Yuri的回答,Font支持回到API 16。 要创建字体系列(在其中指定了不同的字体粗细),应在{strong> / res / font / 下创建in the doc,以创建my_font_family.xml

<font-family xmlns:app="http://schemas.android.com/apk/res-auto">
    <font app:fontStyle="normal" app:fontWeight="400" app:font="@font/myfont_regular"/>
    <font app:fontStyle="normal" app:fontWeight="600" app:font="@font/myfont_semi_bold" />
    <font app:fontStyle="italic" app:fontWeight="400" app:font="@font/myfont_italic" />
</font-family>

要在TextView xml中使用它,应使用app:fontFamily="@font/my_font_family",请谨慎使用app:而不是android:

要选择特定的fontWeight,可以使用android:textFontWeight="200",但它仅适用于API> = 28。要根据API 28之前的权重选择不同的字体,您有两个选择。您可以使用android:textStyle="bold"仅指定“正常/斜体/粗体”,而不能指定确切的重量。或者,您可以像这样直接使用特定的字体粗细:app:fontFamily="@font/myfont_semi_bold"

答案 3 :(得分:7)

有些用户会登陆此页面,搜索有关在xml中使用自定义字体的说明。我是这样做的:

默认情况下,字体资源目录不存在。您可以按照documentation here [太多工作]

手动创建它

或使用GUI中的字体选择器 -

  • 在“设计”选项卡中选择TextView。

  • 打开fontFamily xml属性的下拉列表。

  • 向下滚动到“更多字体”。

  • 从显示的弹出窗口中选择“可下载的字体”。

Android Studio将自动创建字体资源目录,其中包含上述文档中提到的必要声明。完成此步骤后,您可以在字体目录中复制自定义字体文件(例如myfont.ttf),并从xml中设置所需的字体,例如:

<TextView
     android:fontFamily="@font/myfont"
     android:id="@+id/aboutus_head_textview"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:text="@string/who_are_we" />

如果您想在整个应用中使用相同的字体,可以在styles.xml中设置fontFamily AppTheme:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <!-- custom font for the entire app -->
        <item name="fontFamily">@font/myfont</item>
    </style>

[前缀fontFamily with android:如果以上不起作用]

截图:

Screenshot 1

Screenshot 2

注意:此答案假设您使用的是Android Studio 3+并支持库版本26 +

答案 4 :(得分:2)

这是一个例子,min sdk支持18(在app中)

https://github.com/mukundrd/androidFonts