更改整个应用程序的字体

时间:2014-11-12 09:53:02

标签: android fonts styles custom-font

我想在我的应用程序中使用自定义字体。这是给整个应用程序提供字体的最佳方法。我知道如何将自定义字体分配给单个TextView或Button。

是否可以在一个地方提及自定义字体,例如。在styles.xml中,字体将应用于整个应用程序(每个TextView,Button,EditText和很快)。

2 个答案:

答案 0 :(得分:0)

在您的应用中使用此类型的textview

public class MyTextView extends TextView {

public MyTextView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    init();
}

public MyTextView(Context context, AttributeSet attrs) {
    super(context, attrs);
    init();
}

public MyTextView(Context context) {
    super(context);
    init();
}

public void init() {
    Typeface tf = Typeface.createFromAsset(getContext().getAssets(), "font/chiller.ttf");
    setTypeface(tf ,1);

}

}

还编辑文字

public class CEditText extends EditText {


private Context context;
private AttributeSet attrs;
private int defStyle;

public CEditText(Context context) {
    super(context);
    this.context=context;
    init();
} 

 public CEditText(Context context, AttributeSet attrs) {
      super(context, attrs);
      this.context=context;
      this.attrs=attrs;
      init();
 }

public CEditText(Context context, AttributeSet attrs, int defStyle) {
      super(context, attrs, defStyle);
      this.context=context;
      this.attrs=attrs;
      this.defStyle=defStyle;
      init();
}

private void init() {
      Typeface font=Typeface.createFromAsset(getContext().getAssets(), "fonts/myfont.ttf");
      this.setTypeface(font);
}
@Override
public void setTypeface(Typeface tf, int style) {
    tf=Typeface.createFromAsset(getContext().getAssets(), "fonts/myfont.ttf");
    super.setTypeface(tf, style);
}

@Override
public void setTypeface(Typeface tf) {
    tf=Typeface.createFromAsset(getContext().getAssets(), "fonts/myfont.ttf");
    super.setTypeface(tf);
}

答案 1 :(得分:0)

不幸的是,android没有提供任何方法在一个地方为整个应用程序应用自定义字体。

但是,您可以创建CustomTextView扩展TextView和CustomButton扩展Button。您可以通过创建FontInstance来设置字体。