所以我想在android中更改android:fontFamily,但我在android中没有看到任何预定义的字体。如何选择预定义的选项之一?我真的不需要定义我自己的TypeFace,但我所需要的是与现在显示的不同。

<TextView
    android:id="@+id/HeaderText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="52dp"
    android:gravity="center"
    android:text="CallerBlocker"
    android:textSize="40dp"
    android:fontFamily="Arial"
 />

看来我在上面做的事真的行不通!BTW android:fontFamily=“Arial”是一个愚蠢的尝试!


当前回答

如果您使用的是Android Studio 3.5+,更改字体非常简单。在“设计”视图上选择文本小部件,并在“属性窗口”上检查字体系列。值下拉列表包含所有可用字体,您可以从中选择一种字体。如果您正在查找Google字体,请单击“更多字体”选项。

属性窗口

谷歌字体

其他回答

我只想提一下,Android内部字体的地狱即将结束,因为今年在Google IO上,我们终于得到了这个->https://developer.android.com/preview/features/working-with-fonts.html

现在有了一个新的资源类型字体,您可以将所有应用程序字体放在res/fonts文件夹中,然后使用R.font.my_custom_font进行访问,就像您可以访问字符串res值、可绘制res值等一样。您甚至有机会创建字体face xml文件,该文件将由您的自定义字体设置(关于斜体、粗体和下划线属性)。

阅读上面的链接了解更多信息。让我们看看支持。

Android不允许您从XML布局设置自定义字体。相反,您必须将特定字体文件绑定到应用程序的assets文件夹中,并以编程方式进行设置。类似于:

TextView textView = (TextView) findViewById(<your TextView ID>);
Typeface typeFace = Typeface.createFromAsset(getAssets(), "<file name>");
textView.setTypeface(typeFace);

注意,只有在调用setContentView()后才能运行此代码。此外,Android只支持某些字体,并且应为.ttf(TrueType)或.otf(OpenType)格式。即使如此,某些字体也可能不起作用。

这是一种在Android上绝对有效的字体,如果Android不支持您的字体文件,您可以使用它来确认您的代码是否有效。

Android O更新:根据Roger的评论,这现在可以在Android O中使用XML。

新字体资源允许使用

android:fontFamily="@font/my_font_in_font_folder"

您可以这样定义自定义FontFamily:

/res/font/usal.xml:

<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    tools:ignore="UnusedAttribute">
    <font
        android:fontStyle="normal"
        android:fontWeight="200"
        android:font="@font/usual_regular"
        app:fontStyle="normal"
        app:fontWeight="200"
        app:font="@font/usual_regular" />

    <font
        android:fontStyle="italic"
        android:fontWeight="200"
        android:font="@font/usual_regular_italic"
        app:fontStyle="italic"
        app:fontWeight="200"
        app:font="@font/usual_regular_italic" />

    <font
        android:fontStyle="normal"
        android:fontWeight="600"
        android:font="@font/usual_bold"
        app:fontStyle="normal"
        app:fontWeight="600"
        app:font="@font/usual_bold" />

    <font
        android:fontStyle="italic"
        android:fontWeight="600"
        android:font="@font/usual_bold_italic"
        app:fontStyle="italic"
        app:fontWeight="600"
        app:font="@font/usual_bold_italic" />
</font-family>

现在你可以了

android:fontFamily="@font/usual"

假设您的其他字体资源也在那里,小写字母和_s。

Kotlin代码-从资源文件夹设置自定义字体的文本视图

从res->font->avenir_ext_regular.ttf设置自定义字体

textView!!.typeface = ResourcesCompat.getFont(context!!, R.font.avenir_next_regular)