当前位置: 首页 > 知识库问答 >
问题:

如何在Android中以编程方式设置谷歌字体

法兴德
2023-03-14

如何在Android中以编程方式设置谷歌字体

应用程序崩溃原因:android。所容纳之物res.Resources$NotFoundException:无法检索字体资源ID#0x7f090002。

 val typeface = ResourcesCompat.getFont(applicationContext, R.font.halant)
 appVersionName.typeface = typeface

<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:app="http://schemas.android.com/apk/res-auto"
        app:fontProviderAuthority="com.google.android.gms.fonts"
        app:fontProviderPackage="com.google.android.gms"
        app:fontProviderQuery="Halant"
        app:fontProviderCerts="@array/com_google_android_gms_fonts_certs">
</font-family>

共有2个答案

裴俊迈
2023-03-14
val typeface = Typeface.create("sans-serif-condensed", Typeface.BOLD)
textView.typeface = typeface
裴硕
2023-03-14

虽然以上两个答案是正确的,但我会给你关于“可下载字体”的逐步详细信息,以便其他人理解。

注意:设备必须具有Google Play services 11或更高版本才能使用Google字体提供程序。

Android Studio自动生成在应用程序中正确呈现字体所需的相关XML文件。

现在,您可以在TextView中直接添加它,如下所示:

android:fontFamily="@font/halant_light"
     

或以编程方式使用可下载字体,如下所示:

val request = FontRequest(
        "com.google.android.gms.fonts",
        "com.google.android.gms",
        "Halant", //your font
        R.array.com_google_android_gms_fonts_certs
    )
val callback = object : FontsContract.FontRequestCallback() {

    override fun onTypefaceRetrieved(typeface: Typeface) {
        // Your code to set the font goes here
    }

    override fun onTypefaceRequestFailed(reason: Int) {
        // Your code to deal with the failure goes here
        
    }
}
FontsContractCompat.requestFont(mContext, request, callback, mHandler)

如果您不想要上述编程方式,您可以使用我测试并完美运行的以下代码:

val typeface = ResourcesCompat.getFont(applicationContext, R.font.halant_light)
fontText.typeface = typeface
 类似资料:
  • 我在Android中以编程方式设置APN。当我运行代码时,我得到。如果我在清单中提到这个权限,我得到的错误就像这些权限只有SYSTEM APPS。你能帮我解决这个问题吗?参考链接

  • 问题内容: 如何以编程方式设置媒体播放器的音量。我将其用于警报通知。非常感谢您的任何帮助,并在此先感谢。 问题答案: 使用 AudioManager ,您可以简单地控制媒体播放器的音量。 也来自MediaPlayer(但我没有尝试过) 由于:API级别1 设置此播放器的音量。建议使用此API来平衡应用程序中音频流的输出。除非您正在编写用于控制用户设置的应用程序,否则应优先使用此API来代替setS

  • 在这个,这个和这个线程,我试图找到一个答案,如何设置一个单一视图的边距。不过,我在想是不是没有更简单的方法。我将解释为什么我不想使用这种方法: 我有一个扩展按钮的自定义按钮。如果背景设置为默认背景以外的其他内容(通过调用或),我希望边距为0。如果我把这个叫做: 我想让边距重置为-3dp(我已经在这里阅读了如何从像素转换为dp,所以一旦我知道如何设置px中的边距,我可以自己管理转换)。但是,由于这是

  • 我正在使用AutoLayout开发iPad应用程序,如果用户启用某个模式(“平视”模式),我希望只支持纵向(或纵向倒置)方向,而且,如果设备处于横向,我希望自动切换到纵向模式。 在顶视图控制器中,我有以下内容: 根据我在这里其他地方看到的答案,答案似乎是我应该使用“application SetStatusBaroOrientation”。因此,在用户选择“抬头”模式的方法中,我包括: 然而,这似

  • 问题内容: 我的问题很简单 如何以编程方式设置我的按钮layout_gravity? 我在互联网上找到了它,但它只是抛出了一个Nullpointer异常: 有什么办法吗? 问题答案: Java Kotlin 有关重力值以及如何设置重力,请检查“重力”。 基本上,您应该选择依赖于父项。可以是等等。

  • 问题内容: 我正在动态创建按钮。我首先使用XML设置了样式,然后尝试使用下面的XML使其具有程序性。 这是我到目前为止所拥有的。除了可绘制对象,我可以做所有事情。 问题答案: 你可以使用该方法执行此操作。请参阅此处的示例。我在不使用的情况下使用了它,并且效果很好。你可以尝试任何一种方式。 更新:如果链接断开,请在此处复制代码 要么 要么