将字体设置为各种editTexts

时间:2014-02-13 22:54:30

标签: android typeface

我正在开发一个带有自定义字体的应用程序,设置字体工作正常,但我想知道是否有更好的方法将TypeFace设置为我的活动中的所有editTexts而不是逐个放入它们。 这就是我实际做的方式:

Typeface font = Typeface.createFromAsset(this.getAssets(),"fonts/NeoSans.otf");
Typeface fontBold = Typeface.createFromAsset(this.getAssets(),"fonts/NeoSans-Bold.otf");


    edt_txt_nombre = (EditText) findViewById(R.id.edt_nombres);
    edt_txt_apellido = (EditText) findViewById(R.id.edt_apellidos);
    edt_txt_usuario = (EditText) findViewById(R.id.edt_usuario);
    edt_txt_contrasena = (EditText) findViewById(R.id.edt_contrasena);
    edt_txt_email = (EditText) findViewById(R.id.edt_email);
    edt_txt_telefono = (EditText) findViewById(R.id.edt_telefono);
    edt_txt_fecha = (EditText) findViewById(R.id.edt_fec_nac);

    registrar.setTypeface(fontBold);
    txt_nombre.setTypeface(font);
    txt_apellido.setTypeface(font);     
    txt_telefono.setTypeface(font);
    txt_fecha.setTypeface(font);
    edt_txt_nombre.setTypeface(font);
    edt_txt_apellido.setTypeface(font);
    edt_txt_usuario.setTypeface(font);
    edt_txt_contrasena.setTypeface(font);
    edt_txt_email.setTypeface(font);
    edt_txt_telefono.setTypeface(font);
    edt_txt_fecha.setTypeface(font);

这是一种更好(更短)的方式吗?

1 个答案:

答案 0 :(得分:1)

您可以继承EditText并在构造函数中设置字体:

public class MyEditText extends EditText {

    // replace '...' with proper arguments
    public MyEditText(...) {
        super(...)
        // fetch your font
        this.setTypeface(myFont);
    }
}

不要忘记子类中的EditText(Context context, AttributeSet attrs)EditText(Context context, AttributeSet attrs, int style)构造函数,否则布局将无法膨胀。

然后在layout.xml中,请转而使用新的MyEditText子类:

<com.myapp.MyEditText
    ... />