56

我开发了一个安卓项目。在这个项目中,文本字体默认为 android:sans。

现在我想将整个项目的默认文本字体替换为机器人字体。

我怎样才能做到这一点?

4

5 回答 5

64

您可以从此处下载 Roboto 字体: https ://fonts.google.com/specimen/Roboto 。[2020-01-28 更新]

您可以通过使用以传统方式执行此操作TypeFace,如下所示:

Typeface typeface = Typeface.createFromAsset(getAssets(), fontName);
textView.setTypeface(typeface);

注意:以上内容必须在每个Activity.

或者,例如,如果您想将 Roboto 字体应用于TextView应用程序中的所有 s,那么您将需要创建自己的扩展小部件TextView

有一种简单的方法可以做到这一点。按照这个答案中的步骤进行操作:https ://stackoverflow.com/a/9199258/450534 (leocadiotine的完整解决方案。我以前用过它,它就像一个魅力)

编辑:将your_namespace其视为您选择的名称的标记。例如,在 XML 中集成 Admob 时,我使用xmlns:ads. 您可以使用,例如:xmlns:font或描述性的东西。

至于custom.ttf代表什么,它基本上是您需要复制到Assets文件夹中的带有扩展名的字体文件。例如,如果您使用的是ROBOTO-REGULAR.TTF,则将custom.ttf替换为ROBOTO-REGULAR.TTF。使用此示例,整个代码应如下所示:

<your.package.widget.TypefacedTextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:font="http://schemas.android.com/apk/res/your.package"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Custom fonts in XML are easy"
    android:textColor="#FFF"
    android:textSize="14dip"
    font:typeface="ROBOTO-REGULAR.TTF" />
于 2012-11-24T09:03:22.313 回答
23
  1. 下载并解压Roboto字体 zip 文件

  2. assets如果您还没有文件夹,请在您的项目中创建一个文件夹。我假设您正在使用 Android Studio,这是如何做到的。 在此处输入图像描述

  3. 在 assets 文件夹中创建一个新目录,将其命名为font.

  4. 打开您的解压缩文件并复制您选择的字体样式。您的字体文件夹应如下所示:

在此处输入图像描述

您现在可以在应用程序的任何位置使用此字体,如下所示:

   Typeface roboto = Typeface.createFromAsset(context.getAssets(), 
  "font/Roboto-Bold.ttf"); //use this.getAssets if you are calling from an Activity
   txtView.setTypeface(roboto);
于 2015-07-29T09:56:48.840 回答
6
txtView = (TextView) findViewById(R.id.txtView);

Typeface myTypeface = Typeface.createFromAsset(
                          this.getAssets(),
                          "font/Robot.otf");

txtView.setTypeface(myTypeface);
于 2012-11-24T09:09:00.740 回答
6

您可以使用Typerlib轻松完成此操作。

这个库包含了在项目中添加字体资源的复杂性,并回收那些最近创建的字体,以最大限度地提高应用程序的性能。

将此添加到您的build.gradle

dependencies {
    compile 'com.elmargomez.typer:typerlib:1.0.0'
}

然后你可以使用字体

TextView txtView1 = (TextView) findViewById(R.id.yourTxtView1);
TextView txtView2 = (TextView) findViewById(R.id.yourTxtView2);
TextView txtView3 = (TextView) findViewById(R.id.yourTxtView3);
TextView txtView4 = (TextView) findViewById(R.id.yourTxtView4);

txtView1.setTypeface(Typer.set(yourContext).getFont(Font.ROBOTO_REGULAR));
txtView2.setTypeface(Typer.set(yourContext).getFont(Font.ROBOTO_CONDENSED_ITALIC));
txtView3.setTypeface(Typer.set(yourContext).getFont(Font.ROBOTO_THIN));
txtView4.setTypeface(Typer.set(yourContext).getFont(Font.ROBOTO_BOLD));

它包括 Roboto 中的所有当前字体,例如:

    Font.ROBOTO_MEDIUM
    Font.ROBOTO_REGULAR
    etc.

要查看所有可用字体,请在Font类之后按Ctrl+使用 Android Studio Auto complete space

于 2015-09-14T09:14:33.183 回答
3

Typeface.createFromAsset()函数的使用再说一说。当我接到很多电话时,它显着影响了充气时间。Typeface为了克服这个问题,我们创建了一个类似这样的单例实例

public static Typeface getTypeFace() {
        if (fromAsset == null) {
            fromAsset = Typeface.createFromAsset(getContext().getAssets(), "fonts/Roboto-Medium.ttf");
        }
        return fromAsset;
    }
于 2015-03-09T12:20:43.150 回答