establecer fuente en tiempo de ejecución, Textview

¿Cómo configurar la fuente para la vista de texto, que se crea en el tiempo de ejecución?

creé textview

Textview tv = new TextView(this); tv.setTextSize(20); 

como puedo cambiar el tamaño
Quiero establecer el estilo de fuente a “Verdana”.

¿¿Como hacer esto?? se refiere a shishir

Para configurar la fuente incorporada en tiempo de ejecución:

  • En primer lugar, para cambiar Font-face, se utiliza una clase Typeface .

  • Ahora, at Run-Time , para configurar font-face, use setTypeface(Typeface) del código Java

  • at Design-Time , para configurar font-face, use android:typeface="serif"

Por ejemplo:

  

Para establecer fonts personalizadas en su aplicación Android

Para hacer esto, simplemente cree una carpeta assets / en la raíz del proyecto y coloque sus fonts (en formato TrueType o TTF) en los activos. Puede, por ejemplo, crear assets/fonts/ y poner sus archivos TTF allí:

  TextView tv=(TextView)findViewById(R.id.custom); Typeface face=Typeface.createFromAsset(getAssets(), "fonts/HandmadeTypewriter.ttf"); tv.setTypeface(face); 

Puede tener la fuente .ttf en su carpeta de activos. El nombre de la fuente Say es “default.ttf” y ahora solo tiene que escribir debajo de 2 líneas de código

 TextView text = new TextView(this); text.setTypeface(Typeface.createFromAsset(getAssets(), "default.ttf")); 

También debe tener cuidado porque diferentes tipos de letra tienen diferentes tamaños. Es posible que deba establecer el tamaño como:

 text.setTextSize(20); 

Aquí hay una pequeña clase de utilidad

 public class TypefaceHelper { public static void setViewGroupTypeface(ViewGroup container, Typeface typeface) { final int children = container.getChildCount(); for (int i = 0; i < children; i++) View child = container.getChildAt(i); if (child instanceof TextView) { setTextViewTypeface((TextView) child, typeface); } else if (child instanceof ViewGroup) { setViewGroupTypeface((ViewGroup) child, typeface); } } } public static void setTextViewTypeface(TextView textView, Typeface typeface) { textView.setTypeface(typeface); } } 

Para cosas como Spinner o ListView s (es decir, cualquier tipo de AdapterView ) que generen sus hijos desde un adaptador, deberá establecer el tipo de letra de cada elemento View en el getView (o similar) del adaptador. Esto se debe a que las vistas pueden crearse según sea necesario y, por lo tanto, configurar el tipo de Typeface en onCreate no funcionará correctamente.

Debes usar Typeface :

  1. agrega la fuente que deseas usar a tu proyecto como activo.
  2. crear el objeto Typeface usando esa fuente:

    Typeface myFont = Typeface.createFromAsset(getAssets(), "fonts/MyFont.ttf");

  3. establecer tipo de letra para el objeto que desea personalizar:

    TextView myTextView = (TextView)findViewById(R.id.my_text_view); myTextView.setTypeface(myFont);

Con la introducción de Fonts en XML en Android 8.0 (compatible con versiones anteriores de API versión 14) es muy fácil configurar la fuente desde xml.

De la documentación de Android:

Android 8.0 (nivel de API 26) presenta una nueva característica, Fonts in XML, que le permite usar fonts como recursos. Puede agregar el archivo de fuente en la carpeta res / font / para agrupar las fonts como recursos. Estas fonts se comstackn en su archivo R y están automáticamente disponibles en Android Studio. Puede acceder a los recursos de fuente con la ayuda de un nuevo tipo de recurso, fuente. Por ejemplo, para acceder a un recurso de fuente, use @ font / myfont, o R.font.myfont.

Primero crea un directorio de recursos de Android en una carpeta de res nombrada como fuente
Agregue su archivo de fuente .ttf a ese directorio y luego cree una familia de fonts

Crea una familia de fonts

Una familia de fonts es un conjunto de archivos de fonts junto con sus detalles de estilo y peso. En Android, puede crear una nueva familia de fonts como recurso XML y acceder a ella como una sola unidad, en lugar de hacer referencia a cada estilo y peso como recursos independientes. Al hacer esto, el sistema puede seleccionar la fuente correcta en función del estilo de texto que está tratando de usar.

Para crear una familia de fonts, realice los siguientes pasos en el Android Studio:

  1. Haga clic derecho en la carpeta de fonts y vaya a Nuevo> Archivo de recursos de fonts . Aparece la ventana Nuevo archivo de recursos.
  2. Ingrese el nombre del archivo y luego haga clic en Aceptar. El nuevo XML de recurso de fuente se abre en el editor.
  3. Adjunte cada archivo de fuente, estilo y atributo de peso en el elemento . El siguiente XML ilustra la adición de atributos relacionados con la fuente en el XML de recursos de fonts:

A continuación, use el siguiente código para establecer la fuente en su textView como

  

Dinámicamente puedes establecer la familia de fonts similar a android: fontFamily en xml usando esto,

 For Custom font: TextView tv = ((TextView) v.findViewById(R.id.select_item_title)); Typeface face=Typeface.createFromAsset(getAssets(),"fonts/mycustomfont.ttf"); tv.setTypeface(face); For Default font: tv.setTypeface(Typeface.create("sans-serif-medium",Typeface.NORMAL)); 

Estas son la lista de familias de fonts predeterminadas utilizadas, utilice cualquiera de estas sustituyendo la cadena de comillas dobles “sans-serif-medium”

 FONT FAMILY TTF FILE 1 casual ComingSoon.ttf 2 cursive DancingScript-Regular.ttf 3 monospace DroidSansMono.ttf 4 sans-serif Roboto-Regular.ttf 5 sans-serif-black Roboto-Black.ttf 6 sans-serif-condensed RobotoCondensed-Regular.ttf 7 sans-serif-condensed-light RobotoCondensed-Light.ttf 8 sans-serif-light Roboto-Light.ttf 9 sans-serif-medium Roboto-Medium.ttf 10 sans-serif-smallcaps CarroisGothicSC-Regular.ttf 11 sans-serif-thin Roboto-Thin.ttf 12 serif NotoSerif-Regular.ttf 13 serif-monospace CutiveMono.ttf 

“mycustomfont.ttf” es el archivo ttf. La ruta estará en src / assets / fonts / mycustomfont.ttf

Puede usar el siguiente código para configurar todo su texto en una fuente específica en tiempo de ejecución. Simplemente llame al método setViewGroupFont al final de su método Activity onCreate o cada vez que cree dinámicamente nuevas vistas:

 private static final String FONT_NAME = "fonts/Roboto-Regular.ttf"; private static Typeface m_font = null; public static Typeface getFont(Context p_context) { if (null == m_font && null != p_context) { m_font = Typeface.createFromAsset(p_context.getApplicationContext().getAssets(), FONT_NAME); } return m_font; } public static void setViewGroupFont(ViewGroup p_viewGroup) { if (null != p_viewGroup) { for (int currChildIndex = 0; currChildIndex < p_viewGroup.getChildCount(); currChildIndex++) { View currChildView = p_viewGroup.getChildAt(currChildIndex); if (ViewGroup.class.isInstance(currChildView)) { setViewGroupFont((ViewGroup) currChildView); } else { try { Method setTypefaceMethod = currChildView.getClass().getMethod("setTypeface", Typeface.class); setTypefaceMethod.invoke(currChildView, getFont(p_viewGroup.getContext())); } catch (NoSuchMethodException ex) { // Do nothing } catch (Exception ex) { // Unexpected error setting font } } } } }