如何在android项目中使用Roboto字体

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

现在我想把我的整个项目的默认文本字体replace为roboto字体。

我怎样才能做到这一点?

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

你可以通过使用TypeFace按照惯例的方式来TypeFace ,就像这样:

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

注意:以上将在每个Activity完成。

或者,例如,如果要将Roboto字体应用于应用程序中的所有TextView's ,则需要创build自己的扩展TextView的小部件。

有一个简单的方法来做到这一点。 按照从这个答案的步骤SO: https : //stackoverflow.com/a/9199258/450534 (完整的道具leocadiotine的解决scheme,我已经使用它,它像一个魅力)

编辑:把your_namespace想象成一个标记给你一个你select的名字。 例如,在XML中集成Admob时,我使用xmlns:ads 。 您可以使用,例如: xmlns:font或描述性的东西。

至于custom.ttf代表什么,它基本上是扩展名的字体文件,你需要复制到你的Assets文件夹中。 例如,如果您正在使用ROBOTO-REGULAR.TTF ,则用ROBOTO-REGULAR.TTFreplacecustom.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. 下载并解压缩Roboto字体zip文件

  2. 如果您还没有assets文件夹,请在您的项目中创build一个assets文件夹。 假设你正在使用Android Studio,这是怎么做到的。 在这里输入图像说明

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

  4. 打开你的解压缩文件,并复制你select的字体样式。 你的字体文件夹是这样的:

在这里输入图像说明

你现在可以在你的应用程序的任何地方使用这种字体:

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

你可以使用Typerlib轻松地做到这一点 。

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

将其添加到您的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. 

要查看所有可用的字体 ,请按Ctrl + 空格 ,在类Font后使用Android Studio Auto完成。

另外还有一个使用Typeface.createFromAsset()函数的说法。 当我有很多的电话,它显着影响了充气时间。 为了克服这个问题,我们创build了这样的Typeface的单例实例

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