samsung - Cómo agregar fuentes externas a la aplicación de Android
fuentes android ttf (7)
Estaba buscando fuentes elegantes para mi aplicación de Android. pero el problema es cómo puedo hacer que mi aplicación Android sea compatible con fuentes externas.
Gracias.
La forma más fácil de lograr esto es empaquetar la (s) fuente (s) deseada (s) con su aplicación. Para hacer esto, simplemente cree una carpeta assets / en la raíz del proyecto y coloque sus fuentes (en formato TrueType o TTF) en los activos. Puede, por ejemplo, crear activos / fuentes / y poner sus archivos TTF allí.
Luego, debes decirle a tus widgets que usen esa fuente. Desafortunadamente, ya no puede usar XML de diseño para esto, ya que el XML no conoce ninguna fuente que pueda haber escondido como un activo de la aplicación. En su lugar, debe realizar el cambio en el código Java, llamando a Typeface.createFromAsset (getAssets (), "fonts / HandmadeTypewriter.ttf"), luego tomando el objeto Typeface creado y pasándolo a su TextView a través de setTypeface ().
Para más referencia aquí está el tutorial donde obtuve esto:
Cree una carpeta llamada fuentes en la carpeta de activos y agregue el fragmento del enlace a continuación.
Typeface tf = Typeface.createFromAsset(getApplicationContext().getAssets(),"fonts/fontname.ttf");
textview.setTypeface(tf);
Debe crear la carpeta de fuentes en la carpeta de activos en su proyecto y poner su TTF en ella. Luego en tu Actividad onCreate ()
TextView myTextView=(TextView)findViewById(R.id.textBox);
Typeface typeFace=Typeface.createFromAsset(getAssets(),"fonts/mytruetypefont.ttf");
myTextView.setTypeface(typeFace);
Tenga en cuenta que no todos los TTF funcionarán. Mientras estaba experimentando, funcionó solo para un subconjunto (en Windows, aquellos cuyo nombre está escrito en letras mayúsculas).
Para implementarlo, necesita usar Tipo de letra pasar a través de la muestra a continuación
Typeface typeface = Typeface.createFromAsset(getAssets(), "fonts/Roboto/Roboto-Regular.ttf");
for (View view : allViews)
{
if (view instanceof TextView)
{
TextView textView = (TextView) view;
textView.setTypeface(typeface);
}
}
}
Puedes usar el TextView personalizado para toda la aplicación con una fuente personalizada. Aquí hay un ejemplo para ese
public class MyTextView extends TextView {
Typeface normalTypeface = Typeface.createFromAsset(getContext().getAssets(), Constants.FONT_REGULAR);
Typeface boldTypeface = Typeface.createFromAsset(getContext().getAssets(), Constants.FONT_BOLD);
public MyTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public MyTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyTextView(Context context) {
super(context);
}
public void setTypeface(Typeface tf, int style) {
if (style == Typeface.BOLD) {
super.setTypeface(boldTypeface/*, -1*/);
} else {
super.setTypeface(normalTypeface/*, -1*/);
}
}
}
Recomiendo este approach es muy bueno agregar el nombre de la fuente personalizada en el typeface
de typeface
a styles.xml
y poner el conjunto de fuentes en la carpeta de assets
.
Un punto más además de las respuestas anteriores. Cuando se utiliza una fuente dentro de un fragmento, la instanciación de la tipografía se debe hacer en el método onAttach (anular) como se indica a continuación:
@Override
public void onAttach(Activity activity){
super.onAttach(activity);
Typeface tf = Typeface.createFromAsset(getApplicationContext().getAssets(),"fonts/fontname.ttf");
}
Motivo :
Hay un corto período de tiempo antes de que un fragmento se adjunte a una actividad. Si se llama al método CreateFromAsset antes de adjuntar un fragmento a una actividad, se produce un error.