Las fuentes ttf personalizadas no se muestran correctamente en TextView en Android 4.4 KitKat
Tengo un texto que tiene algunas partes en negrita. Hasta KitKat esta estrategia ( como se menciona en este post ) funcionó perfectamente bien
Mi archivo de recursos de cadenas:
- Smartcast es imposible porque propery tiene getter abierto o personalizado
- Determinar el tipo de datos de una columna en SQLite
- Multiplicando un vector2 por un escalar (LibGDX)
- Generic OR en lugar de AND <T extends Number | CharSequence>
- ¿Cómo saber cuál es el tipo MIME según el archivo?
<string name="multi_style_text">NON-BOLD TEXT \n<b>BOLD</b></string>
Mi código de aplicación en fragmento:
txtView.setTypeface(FontUtils.getOstrichRegular(this.getActivity())); ... public static Typeface getOstrichRegular(Context context) { return Typeface.createFromAsset(context.getAssets(), "fonts/ostrich_regular.ttf"); }
Actualmente (en KitKat), la parte en negrita no se muestra en la fuente personalizada, la parte en negrita se muestra en la fuente personalizada. En versiones anteriores de Android, todo el texto se muestra en la fuente personalizada.
¿Lo que da?
- Android: Obtención de la lista de todos los archivos de un tipo específico
- En Android OS o Java, ¿cuál es la diferencia entre una secuencia de caracteres y una cadena?
- Tipos Primitivos de Java: int vs. Integer
- Kotlin - cuando la expresión con el tipo de retorno de la función
- Tabla de SQLite con columnas de columna de enteros
- Tipificación de un objeto de la clase padre al niño
- Error: Error: Los tipos enteros no están permitidos (en 'layout_height' con el valor '10')
- Qué son los tipos de datos en SQLite que soportan android
Así que, después de estar frustrado por este error, busqué alrededor y encontré una solución al problema. En mi proyecto actual utilizamos la fuente calibri.ttf. Que estaba funcionando bien hasta 4.4. Una vez que conseguí la actualización a mi nexo 4, todos los TextViews con la fuente de Calibri mostraban "ff" en vez del texto entero.
LA FIX – obtener una versión .otf (open type font) de su fuente, y poner en el proyecto, funciona como un encanto. Demasiado malo google no informó a los reveladores en esto y hay muy poca documentación en la materia.
Aparentemente este es un error en KitKat y se ha corregido en un árbol interno .
Pon tu fuente personalizada en los recursos de android bajo el nombre de la carpeta "fuente" o lo que quieras
Prueba esto
myTypeface = Typeface.createFromAsset(this.getAssets(), "fonts/<<your font>>.ttf");
En onCreate()
entonces
[use youcontroll].setTypeface(myTypeface);
La mejor de las suertes…
Resolví el problema convirtiendo mi archivo.ttf a file.otf
Reemplazar
Typeface typeface = Typeface.createFromAsset(activity.getAssets(), "fonts/ostrich_regular.ttf"); yourTextView.setTypeface(typeface);
Por:
Typeface typeface = Typeface.createFromAsset(activity.getAssets(), "fonts/ostrich_regular.otf"); yourTextView.setTypeface(typeface);
FYI: el trabajo de formato .otf para toda la versión de android (no sólo en kitkat)
Después de muchas horas buscando roboto.otf (año 2014) entendí que era un error. Simplemente descargue una fuente ttf normal de https://www.fontsquirrel.com/fonts/roboto-2014 y copie a la carpeta assets, luego use setTypeface. También puede convertirlo en otf con cualquier sitio web.