更改应用的默认字体

时间:2015-06-03 15:33:14

标签: android fonts

我正在开发一个Android项目,我想更改所有应用程序的默认字体,而不仅仅是单个TextView或按钮。

我的自定义字体存储为assets/fonts/font.ttf

3 个答案:

答案 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