Estoy usando la fuente Roboto light en mi aplicación. Para configurar la fuente tengo que agregar el android:fontFamily="sans-serif-light"
a cada vista. ¿Hay alguna forma de declarar la fuente Roboto como familia de fuentes predeterminada para toda la aplicación? Lo intenté así, pero no pareció funcionar.
<style name="AppBaseTheme" parent="android:Theme.Light"></style>
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:fontFamily">sans-serif-light</item>
</style>
android
android-fonts
tomrozb
fuente
fuente
Respuestas:
La respuesta es sí.
Luz global Roboto para
TextView
yButton
clases:Simplemente seleccione el estilo que desee de la lista themes.xml , luego cree su estilo personalizado basado en el original. Al final, aplique el estilo como tema de la aplicación.
Funcionará solo con fuentes incorporadas como Roboto, pero esa era la pregunta. Para fuentes personalizadas (cargadas de activos, por ejemplo), este método no funcionará.
EDITAR 13/08/15
Si está utilizando temas de AppCompat, recuerde eliminar el
android:
prefijo. Por ejemplo:Tenga en cuenta
buttonStyle
que no contiene elandroid:
prefijo, perotextViewStyle
debe contenerlo.fuente
sans-serif-light
valor? ¿Hay una lista de valores válidos parafontFamily
algún lugar? He estado revisando los documentos, así como los archivos de tema y estilo en la fuente de Android y no puedo encontrar nada.Con el lanzamiento de Android Oreo, puede utilizar la biblioteca de soporte para alcanzar este objetivo.
Consulte su familia de fuentes predeterminada en el estilo principal de su aplicación:
Consulte https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml.html para obtener información más detallada.
fuente
android:
prefijoBase.TextAppearance.AppCompat
, no se usa allí.Para cambiar la fuente de su aplicación, siga los siguientes pasos:
res
directorio crea un nuevo directorio y llámalofont
.res
->values
->styles.xml
inside<resources>
-><style>
agrega tu fuente<item name="android:fontFamily">@font/font_name</item>
.Ahora todo el texto de su aplicación debe estar en la fuente que agregue.
fuente
LEER ACTUALIZACIONES A CONTINUACIÓN
Tuve el mismo problema con la incrustación de una nueva fuente y finalmente conseguí que funcionara extendiendo TextView y configurando la fuente tipográfica dentro.
Debe cambiar los Elementos TextView más tarde de a en cada elemento. Y si usa el UI-Creator en Eclipse, a veces no muestra las TextViews correctamente. Fue lo único que funcionó para mí ...
ACTUALIZAR
Hoy en día estoy usando la reflexión para cambiar los tipos de letra en toda la aplicación sin extender TextViews. Mira esta publicación SO
ACTUALIZACIÓN 2
A partir del nivel de API 26 y disponible en 'biblioteca de soporte', puede usar
Más información: Fuentes en XML
fuente
getContext()
cuando la variable es estática. Debería implementarlo de manera única, de lo contrario, el código actual ni siquiera se compilará.Agregue esta línea de código en su res / value / styles.xml
todo el estilo se verá así
cambie "circular_medium" a su propio nombre de fuente.
fuente
No hablemos de rendimiento, para fuentes personalizadas puede tener un método recursivo en bucle a través de todas las vistas y establecer el tipo de letra si es TextView:
En toda su actividad, pásele ViewGroup actual después de setContentView y listo:
Por fragmento puedes hacer algo similar.
fuente
recyclerView
como el infierno.Otra forma de hacer esto para toda la aplicación es usar la reflexión basada en esta respuesta
luego, cuando desee anular las fuentes, puede llamar al método y asignarle un mapa de tipos de letra de la siguiente manera:
para ver el ejemplo completo
Esto solo funciona para Android SDK 21 y superior para versiones anteriores, consulte el ejemplo completo
fuente
Simplemente use esta lib compílela en su archivo de calificación
y usarlo en el método onCreate en la actividad principal
Esta es la forma súper rápida más elegante de hacer eso.
fuente
Este es el trabajo para mi proyecto, fuente https://gist.github.com/artem-zinnatullin/7749076
Cree el directorio de fuentes dentro de la Carpeta de activos y luego copie su fuente personalizada al directorio de fuentes, por ejemplo, estoy usando trebuchet.ttf;
Crear una clase TypefaceUtil.java;
Editar tema en styles.xml agregar a continuación
Ejemplo en Mis estilos.xml
Finalmente, en Activity or Fragment onCreate call TypefaceUtil.java
fuente
Android no ofrece mucho soporte para la aplicación de fuentes en toda la aplicación (consulte este problema ). Tiene 4 opciones para configurar la fuente para toda la aplicación:
Los detalles de estas opciones se pueden encontrar aquí .
fuente
Sé que esta pregunta es bastante antigua, pero he encontrado una buena solución. Básicamente, pasa un diseño de contenedor a esta función, y aplicará la fuente a todas las vistas admitidas, y hará un ciclo recursivo en diseños secundarios:
fuente
a simple conjunto de tipo de letra de aplicación a
normal
,sans
,serif
omonospace
(no a una fuente personalizada!), se puede hacer esto.defina un tema y establezca el
android:typeface
atributo en el tipo de letra que desea usar enstyles.xml
:aplicar el tema a toda la aplicación en el
AndroidManifest.xml
archivo:referencia de Android
fuente
Pruebe esta biblioteca, es ligera y fácil de implementar.
https://github.com/sunnag7/FontStyler
fuente
La respuesta es no, no puedes. Ver ¿Es posible establecer una fuente personalizada para toda la aplicación? para más información.
Hay soluciones, pero nada en las líneas de "una sola línea de código aquí y todas mis fuentes serán esto lugar de eso ".
(Agradezco a Google -y a Apple- por eso). Las fuentes personalizadas tienen un lugar, pero hacerlas fáciles de reemplazar en toda la aplicación, habría creado un mundo entero de aplicaciones Comic Sans )
fuente