我开发了一个安卓项目。在这个项目中,文本字体默认为 android:sans。
现在我想将整个项目的默认文本字体替换为机器人字体。
我怎样才能做到这一点?
您可以从此处下载 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" />
下载并解压Roboto
字体 zip 文件
assets
如果您还没有文件夹,请在您的项目中创建一个文件夹。我假设您正在使用 Android Studio,这是如何做到的。
在 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);
txtView = (TextView) findViewById(R.id.txtView);
Typeface myTypeface = Typeface.createFromAsset(
this.getAssets(),
"font/Robot.otf");
txtView.setTypeface(myTypeface);
您可以使用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。
对Typeface.createFromAsset()
函数的使用再说一说。当我接到很多电话时,它显着影响了充气时间。Typeface
为了克服这个问题,我们创建了一个类似这样的单例实例
public static Typeface getTypeFace() {
if (fromAsset == null) {
fromAsset = Typeface.createFromAsset(getContext().getAssets(), "fonts/Roboto-Medium.ttf");
}
return fromAsset;
}