我正在开发一个带有自定义字体的应用程序,设置字体工作正常,但我想知道是否有更好的方法将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);
这是一种更好(更短)的方式吗?
答案 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
... />