如何在android Project中使用Roboto字体

时间:2012-11-24 08:45:29

标签: android fonts

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

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

我该怎么做?

4 个答案:

答案 0 :(得分:64)

您可以从此处下载Roboto字体: https://www.google.com/design/spec/resources/roboto-noto-fonts.html

您可以使用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" />

答案 1 :(得分:22)

  1. Download并解压缩Roboto字体zip文件

  2. 如果您还没有项目,请在项目中创建一个assets文件夹。我假设你使用的是Android Studio,这是怎么做的。 enter image description here

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

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

  5. enter image description here

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

       Typeface roboto = Typeface.createFromAsset(context.getAssets(), 
      "font/Roboto-Bold.ttf"); //use this.getAssets if you are calling from an Activity
       txtView.setTypeface(roboto);
    

答案 2 :(得分:6)

txtView = (TextView) findViewById(R.id.txtView);

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

txtView.setTypeface(myTypeface);

答案 3 :(得分:3)

使用Typeface.createFromAsset()函数的另一个注释。当我接到很多电话时,它会显着影响充气时间。为了解决这个问题,我们创建了Typeface这样的单例实例

public static Typeface getTypeFace() {
        if (fromAsset == null) {
            fromAsset = Typeface.createFromAsset(getContext().getAssets(), "fonts/Roboto-Medium.ttf");
        }
        return fromAsset;
    }