java - Problema cuando se usa una fuente personalizada: "no se puede hacer la tipografía nativa"
android listview (16)
Acabo de build --> clean
y comenzó a renderizar.
Intento usar una fuente que encontré en Internet, pero el problema es que obtengo una FC con "la tipografía nativa no se puede hacer".
Aquí está el código en el getView de mi ListVIew:
holder.tv_SuraName =(TextView)convertView.findViewById(R.id.Start_Name);
holder.tv_SuraName.setTypeface(Typeface.createFromAsset(mContext.getAssets(), "suralist_font.ttf"));
¿Alguien puede decirme por qué puedo usar la rom personalizada? Puedes obtenerlo HERE ... el archivo es .ttf
Básicamente hay 4 cosas que pueden causar esto:
- Usas la extensión incorrecta
- Debe colocar las fuentes en la carpeta assets y no dentro de assets / fonts /
- Escribiste mal las fuentes
- Las fuentes deben ser minúsculas (en mi caso, la solución fue cambiar el nombre de MyFont.ttf a myfont.ttf, extraño)
Bastante viejo hilo, pero quiero agregar una razón más para que esto suceda: debes establecer la vista del contenido antes de llamar al tipo de letra. Ver ejemplo a continuación
No funciona:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView title = (TextView)findViewById(R.id.tvTitle);
Typeface font = Typeface.createFromAsset(this.getAssets(), "fonts/whatever.ttf");
title.setTypeface(font);
setContentView(R.layout.main);
}
¡Funciona!
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); // <-- call before typeface
TextView title = (TextView)findViewById(R.id.tvTitle);
Typeface font = Typeface.createFromAsset(this.getAssets(), "fonts/whatever.ttf");
title.setTypeface(font);
}
Como dice CommonsWare en esta respuesta
Supongo que hay un problema con la fuente en sí. Ese error se activará cuando el código nativo en el sistema operativo intente cargar el tipo de letra.
De todos modos prueba este:
holder.tv_SuraName = (TextView)convertView.findViewById(R.id.Start_Name);
Typeface Font = Typeface.createFromAsset(this.getAssets(),"suralist_font.ttf");
holder.tv_SuraName.setTypeface(Font);
El archivo de fuente está dañado o no es compatible por algún motivo. Puede soltarlo en la tarjeta SD y cargarlo desde el archivo, para asegurarse de que no sea un problema con sus activos.
Espero que esto ayude
Typeface.createFromAsset filtra la corriente de activos: http://code.google.com/p/android/issues/detail?id=9904
Estoy usando android studio, en mi caso el problema fue con la ruta de la carpeta assets, en la carpeta Eclipse path for assets está res / assets / pero en Android Studio es src / main / assets / Así que, simplemente muevo mi archivo de fuente a este camino y finalmente problema resuelto.
He estado depurando para siempre este error en Android Studio. Limpiar y reconstruir el proyecto después de agregar las fuentes al directorio de activos me solucionó el problema.
Lo que funcionó para mí fue cambiar primero el nombre de mi fuente a minúsculas y guiones bajos: de Amatic-Sc.ttf a amatic_sc.ttf .
Luego, en el método set.TypeFace, cambie assets / fonts / amatic_sc.ttf a solo fonts / amatic_sc.ttf .
Mi problema fue la ubicación incorrecta de la carpeta de activos.
Al usar Android Studio, la carpeta de activos debe estar dentro de los conjuntos fuente, por ej.
src / main / assets /
Encontrado en esta respuesta
O bien el archivo de la fuente está dañado, de lo contrario comete un error ortográfico al llamar a su nombre de archivo. Tuve el mismo problema, fue porque el nombre de archivo especificado en la carpeta de activos era
roboto_black.ttf
y mientras declaro en el archivo java, he deletreado como:
roboto_blak.ttf
Si tus archivos .ttf están en la carpeta de activos, utiliza:
Typeface type_bold = Typeface.createFromAsset(getAssets(), "roboto_black.ttf");
Si está en la carpeta de fuentes, use:
type_bold = Typeface.createFromAsset(getAssets(), "fonts/roboto_black.ttf");
¡Espero eso ayude!
Tenga en cuenta que esto se debe a un archivo dañado o a haber colocado el archivo en la carpeta incorrecta.
De acuerdo con la documentación de Android here
main / assets / Esto está vacío. Puede usarlo para almacenar archivos de activos sin procesar. Los archivos que guarde aquí se compilan en un archivo .apk tal como está, y se conserva el nombre del archivo original. Puede navegar por este directorio de la misma manera que un sistema de archivos típico usando URI y leer archivos como una secuencia de bytes usando AssetManager. Por ejemplo, esta es una buena ubicación para texturas y datos de juegos.
Por lo tanto, la estructura de su carpeta debe ser su módulo / principal / activos (por ejemplo, un *** pp / main / assets ***)
Tuve el mismo problema con COMIC.TTF de comics sans ms de Windows. Como el archivo original que coloqué en la carpeta assets / fonts estaba en mayúsculas, como he escrito anteriormente, tuve que escribirlo exactamente en mayúsculas. Typeface.createFromAsset (getAssets (), "fonts / COMIC.TTF");
resulta que el problema fue causado por la minúscula: Typeface.createFromAsset (getAssets (), "fonts / comic.ttf");
Tuve el mismo problema que sucedió en Android 4.0.3-4.0.4 (100% reproducible en el emulador IceCreamSandwich mips 4.0.3).
El problema era que las fuentes TTF, que tenía, no eran correctas, a pesar de que casi todas las versiones de Android podían cargar esas fuentes TTF. Así que utilicé https://cloudconvert.com/woff-to-ttf (ya que también tenía archivos woff) para crear nuevas fuentes TTF, lo que resolvió mi problema.
Tuve el mismo problema, creé el mío en assets> fonts> whatever.ttf y recibía el mismo error. Agregué la extensión de fuentes (fonts / whatever.ttf) y solucionó el problema en todos los casos.
holder.tv_SuraName =(TextView)convertView.findViewById(R.id.Start_Name);
holder.tv_SuraName.setTypeface(Typeface.createFromAsset(mContext.getAssets(), "fonts/suralist_font.ttf"));
Verifique dos veces que la extensión no está en mayúsculas, es decir. suralist_font.TTF
Las fuentes a menudo parecen venir de esa manera y pueden pasarse por alto.