我正在开发一个Android项目,我想更改所有应用程序的默认字体,而不仅仅是单个TextView或按钮。
我的自定义字体存储为assets/fonts/font.ttf
答案 0 :(得分:2)
使用书法图书馆!它完全是为这个问题而设计的。
https://github.com/chrisjenx/Calligraphy
来自文档:
在扩展Application
的类中放入此代码。
CalligraphyConfig.initDefault(new CalligraphyConfig.Builder()
.setDefaultFontPath("fonts/font.ttf")
.setFontAttrId(R.attr.fontPath)
.build()
);
然后在每个Activity
@Override
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));
}
答案 1 :(得分:0)
您所要做的就是:首先创建这样的字体对象:
Typeface typeFace= Typeface.createFromAsset(getAssets(),
"fonts/font.ttf");
并在需要的地方设置此字体,如:
textView.setTypeFace(typeFace);
您只需将字体文件放入资源即可更改整个应用的字体。
答案 2 :(得分:0)
我以前不得不处理这件事。它非常烦人,因为没有好办法。我发现它的最好方法是覆盖textview并改用自定义类。制作这个课程
import android.content.Context;
import android.graphics.Typeface;
import android.util.AttributeSet;
import android.widget.TextView;
/**
* Created by shemesht on 6/3/15.
*/
public class CustomTextView extends TextView {
public CustomTextView(Context context) {
super(context);
Typeface typeFace= Typeface.createFromAsset(getContext().getAssets(), "fonts/font.ttf");
setTypeface(typeFace);
}
public CustomTextView(Context context, AttributeSet attrs) {
super(context, attrs);
Typeface typeFace= Typeface.createFromAsset(getContext().getAssets(), "fonts/font.ttf");
setTypeface(typeFace);
}
public CustomTextView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
Typeface typeFace= Typeface.createFromAsset(getContext().getAssets(), "fonts/font.ttf");
setTypeface(typeFace);
}
public CustomTextView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
Typeface typeFace= Typeface.createFromAsset(getContext().getAssets(), "fonts/font.ttf");
setTypeface(typeFace);
}
}
然后在你的xml中放入
<com.yourApp.Namehere.CustomTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="this text has a new font!"/>
多数民众赞成。你仍然可以在java中正常引用你的textview