这个问题已经在这里有一个答案:
- 是否可以设置应用程序的整个自定义字体? 24个回答
我已经开发了一个Android项目。 在这个项目中的文本字体默认到Android:无。
现在我要替换默认文本字体的Roboto字体为我的整个项目。
我怎样才能做到这一点?
这个问题已经在这里有一个答案:
我已经开发了一个Android项目。 在这个项目中的文本字体默认到Android:无。
现在我要替换默认文本字体的Roboto字体为我的整个项目。
我怎样才能做到这一点?
您可以从这里的Roboto字体: https://www.google.com/design/spec/resources/roboto-noto-fonts.html 。
您可以通过使用做到这一点conventionaly方式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,然后替换的Roboto-REGULAR.TTF的custom.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的工作室,这是如何做到这一点。
创建资产的文件夹一个新的目录,将其命名font
。
打开解压缩后的文件,复制您选择的字体样式。 您的字体文件夹shouls是这样的:
现在,您可以在您的应用程序像这样在任何地方使用该字体:
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 。
这个库包装了加入项目中的字体资源的复杂性和回收那些新近创建的字体序最大限度地提高应用的perfromance。
添加到您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.
要查看所有可用的字体使用Android Studio的自动完成的类字体后,按Ctrl + 空格 。
还有一个备注为使用Typeface.createFromAsset()
函数。 当我有它的许多调用它显著影响的充气时间。 为了克服这个问题,我们创建的单一实例Typeface
这样
public static Typeface getTypeFace() {
if (fromAsset == null) {
fromAsset = Typeface.createFromAsset(getContext().getAssets(), "fonts/Roboto-Medium.ttf");
}
return fromAsset;
}