我需要在整个应用程序中使用某种特定字体。我有相应的.ttf文件。 是否可以在应用程序启动时将其设置为默认字体,然后在应用程序的其他地方使用它?设置后,我该如何在我的布局XML中使用它?
我需要在整个应用程序中使用某种特定字体。我有相应的.ttf文件。 是否可以在应用程序启动时将其设置为默认字体,然后在应用程序的其他地方使用它?设置后,我该如何在我的布局XML中使用它?
package com.theeasylearn.demo.designdemo;
import android.content.Context;
import android.graphics.Typeface;
import android.util.AttributeSet;
import android.widget.TextView;
public class MyButton extends TextView {
public MyButton(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
public MyButton(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public MyButton(Context context) {
super(context);
init();
}
private void init() {
Typeface tf =
Typeface.createFromAsset(
getContext().getAssets(), "angelina.TTF");
setTypeface(tf);
}
}
TextView
。 - blueware这个解决方案在某些情况下无法正常工作。
因此我对它进行了扩展:
FontsReplacer.java
public class MyApplication extends Application {
@Override
public void onCreate() {
FontsReplacer.replaceFonts(this);
super.onCreate();
}
}
https://gist.github.com/orwir/6df839e3527647adc2d56bfadfaad805
如果要更改TextView的默认字体族,请在应用程序主题中覆盖textViewStyle。
如果要使用自定义字体族,请使用支持库中的字体资源。
该功能已添加到Android 26中,但通过supportlib向旧版本进行了后移植。
https://developer.android.com/guide/topics/resources/font-resource.html https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml.html#using-support-lib
是的,可以将字体设置为整个应用程序。
最简单的方法是将所需的字体与应用程序一起打包。
要做到这一点,只需在项目根目录中创建一个assets/文件夹,并将字体(以TrueType或TTF形式)放入其中。
例如,您可以创建assets/fonts/并将TTF文件放在其中。
public class FontSampler extends Activity {
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
TextView tv=(TextView)findViewById(R.id.custom);
Typeface face=Typeface.createFromAsset(getAssets(), "fonts/HandmadeTypewriter.ttf");
tv.setTypeface(face);
}
}