如何使用 Android 提供的(自定义)字体?

How use Android supplied (custom) fonts?

根据 Android Typography 页面,在 Ice Cream Sandwich 中引入了 Roboto 字体。我可以在那里下载 .ttf 文件,或者我可以在 <android-sdk>/platforms/android-x/data/fonts 目录(其中 x 是 ICS 版本和更高版本)中找到它(以及许多其他文件)。

如果我想在我的应用程序中实际使用这种字体,我是否仍然需要将其复制到我的 assets/fonts 目录并像 this 一样设置字体,或者是否有其他访问它的方法在我的布局中 XML 个文件?

编辑:

为了澄清这个问题,我的意思是任何 Android 提供的字体。因此,如果您查看 Android Lollipop 的字体文件夹 (android-sdk/platforms/android-21/data),就会发现很多新字体。

假设我想在一个布局中使用 Roboto-Italic,在一个 TextView 中使用 NotoSerif-Bold,在另一个布局中使用 NotoSerif-Bold。我可以在我的 XML 布局文件中使用 android:typeface="..." 指定它,还是我需要手动将所需的 .ttf 文件复制到我的字体文件夹并子类化 TextView 小部件?

您好,您需要像下面这样在 TextView 上设置字体:

Typeface yourTypeface = Typeface.createFromAsset(getContext().getAssets(), "fonts/" + fontName + ".ttf");
yourTextView.setTypeface(yourTypeface);

android 4.0 及更高版本已默认使用 Roboto 字体,因此您无需执行任何操作。

如果你想将 Roboto 设置为你的字体,你必须验证你的版本,如果你有 Android < 4.0 你必须做这样的事情

Typeface font = Typeface.createFromAsset(getAssets(), "fonts/roboto.ttf");

TextView text = (TextView) findViewById(R.id.text);
text.setTypeface(font);

但如果你的版本是 4.0 或更高版本,如 JonasCz 所说,则没有必要,你可以在 https://developer.android.com/design/style/typography.html

中阅读更多相关信息

注意:将字体复制到assets/fonts。此代码也可用于在您的视图中放置任何字体。