我开发了一个android项目。在这个项目中,文本字体默认为android:sans。
现在我想将整个项目的默认文本字体替换为roboto字体。
我该怎么做?
答案 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)
Download并解压缩Roboto
字体zip文件
在assets文件夹中创建一个新目录,将其命名为font
。
打开解压缩的文件并复制您选择的字体样式。您的字体文件夹应如下所示:
您现在可以在应用中的任何位置使用此字体,如下所示:
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;
}