Android 在API中使用XML字体<;26

Android 在API中使用XML字体<;26,android,fonts,Android,Fonts,Android API 26支持这一点,但我们是否有一个支持库,可以提供字体作为资源在res中的使用?[font in XML]如果是,支持哪种API 我说的是AndroidOSDK特性,它允许我们按照上面的链接设置XML字体。我敢肯定,这不是MM的固有特性 下面是一个例子,min sdk support 18(应用程序内) 根据谷歌的说法,只要满足以下条件,Android 4.0+(API 14+)就支持该功能: 您正在使用支持库版本26.0.0-beta1或更高版本 您正在使用AppCom

Android API 26支持这一点,但我们是否有一个支持库,可以提供字体作为资源在res中的使用?[font in XML]如果是,支持哪种API


我说的是AndroidOSDK特性,它允许我们按照上面的链接设置XML字体。我敢肯定,这不是MM的固有特性

下面是一个例子,min sdk support 18(应用程序内)


根据谷歌的说法,只要满足以下条件,Android 4.0+(API 14+)就支持该功能:

  • 您正在使用支持库版本26.0.0-beta1或更高版本
  • 您正在使用AppCompat
资料来源:

我希望我可以在早于8(API 26)的Android版本上使用这个应用程序内小部件,但是这是不可能的,因为AppCompatTextView不能在应用程序小部件中使用。Android O的“XML字体”的第三方替代品(如库)也不能在应用程序小部件中使用


应用程序小部件的唯一替代方法是使用ImageView而不是TextView,并使用RemoteView方法,如setImageViewUri(…)setImageViewBitmap(…),这两个都有问题。

要在
API
上支持低于26的字体系列,我们需要使用

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

而不是

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

一些用户将登陆此页面,从xml搜索应用程序中使用自定义字体的说明。我是这样做的:

默认情况下,字体资源目录不存在。您可以按照[太多工作]手动创建它

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

  • 在“设计”选项卡中选择文本视图

  • 打开
    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>

@颜色/原色
@颜色/原色暗
@颜色/颜色重音
@字体/myfont
[前缀fontFamily with
android:
如果上述操作不起作用]

截图:


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

要完成Yuri的回答,字体支持返回API 16。 要创建字体系列(其中指定了不同的字体权重),应在/res/font/下创建
my\u font\u family.xml
,如下所示:


要在
TextView
xml中使用此选项,您应该使用
app:fontfamine=“@font/my\u font\u family”
,注意
app:
而不是
android:

要选择特定的
fontwweight
,您可以使用
android:textFontWeight=“200”
,但它仅适用于API>=28。要根据API 28之前的权重选择不同的字体,您有两个选项。您可以使用
android:textStyle=“bold”
仅指定“普通/斜体/粗体”,但不是确切的重量。或者您可以直接使用如下字体的特定重量:
app:fontfamine=“@font/myfont\u semi\u bold”


请注意:如果您在应用程序中使用自定义textview,
YourTextView
,它必须扩展
AppCompatTextView
,而不仅仅是
android.widget.textview

,我正在我的一个应用程序中使用此功能,它支持API 9到API 18。据我所知没有限制。我不再支持API8了,但我想它也可以使用。您向gradle添加了哪个库?没有。这是本地特色。顺便说一句,Eclipse不需要所有的“渐变元素”;)我想我被误解了。我说的是O中引入的“XML中的字体”功能。通过一些小技巧,编辑问题以澄清
土生土长的人。为什么其他人说这是本地特色?我正在使用SDK Android Studio 2.3.2。我试过使用@font/arial.ttf。它不起作用。我使用的是支持库版本25.3.1。现在我知道是怎么回事了,这有用吗?有些人说你必须升级到Android Studio 3才能工作。谢谢你的提示。我把我的手机换成了,现在可以用了。谢谢。这应标记为正确答案。您是否尝试了
textFontWeight
?因为即使在API28上,它对我也不起作用。它对我不起作用,我在模拟器中运行。我正在使用实现“androidx.appcompat:appcompat:1.0.2”和MaterialComponentstheme@GaneshChowdharySadanala请检查添加的注释,这可能会对您有所帮助。textStyle解决方案在支持库的Android 5上不起作用是否可以包含较旧的API?
<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>