Por lo tanto, me gustaría cambiar el android:fontFamily
en Android, pero no veo ninguna fuente predefinida en Android. ¿Cómo selecciono uno de los predefinidos? Realmente no necesito definir mi propio TypeFace, pero todo lo que necesito es algo diferente de lo que muestra en este momento.
<TextView
android:id="@+id/HeaderText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="52dp"
android:gravity="center"
android:text="CallerBlocker"
android:textSize="40dp"
android:fontFamily="Arial"
/>
¡Parece que lo que hice allí realmente no funcionará! Por cierto android:fontFamily="Arial"
fue un intento estúpido!
Respuestas:
Desde Android 4.1 / 4.2 / 5.0, están disponibles las siguientes familias de fuentes Roboto :
en combinación con
Estas 16 variantes son posibles:
fonts.xml
fuente
android:fontFamily="sans-serif-black-small-caps"
no funciona. Alguien sabe?android:fontFamily
en TextView.Esta es la forma de configurar la fuente mediante programación:
ponga el archivo de fuente en su carpeta de activos. En mi caso, creé un subdirectorio llamado fuentes.
EDITAR: si se pregunta dónde está su carpeta de activos, vea esta pregunta
fuente
A partir de Android-Studio 3.0, es muy fácil cambiar la familia de fuentes
Usando la biblioteca de soporte 26, funcionará en dispositivos con Android API versión 16 y superior
Cree una carpeta
font
en elres
directorio. Descargue la fuente que desee y péguela dentro de lafont
carpeta. La estructura debería ser algo como a continuaciónNota: A partir de Android Support Library 26.0, debe declarar ambos conjuntos de atributos (android: y app:) para asegurarse de que sus fuentes se carguen en dispositivos que ejecutan Api 26 o versiones inferiores.
Ahora puede cambiar la fuente en el diseño usando
Para cambiar progresivamente
Para cambiar la fuente usando styles.xml cree un estilo
y aplicar este estilo a
TextView
también puedes crear tu propia familia de fuentes
- Haga clic con el botón derecho en la carpeta de fuentes y vaya a Nuevo> Archivo de recursos de fuentes . Aparece la ventana Nuevo archivo de recursos.
- Ingrese el nombre del archivo y luego haga clic en Aceptar . El nuevo recurso XML de fuente se abre en el editor.
Escriba su propia familia de fuentes aquí, por ejemplo
esto es simplemente un mapeo de un fontStyle y fontWeight específico al recurso de fuente que se usará para representar esa variante específica. Los valores válidos para fontStyle son normales o cursiva; y fontWeight se ajusta a la especificación de peso de fuente CSS
1. Para cambiar la familia de fuentes en el diseño , puede escribir
2. Para cambiar programáticamente
Para cambiar la fuente de toda la aplicación Agregue estas dos líneas en AppTheme
Consulte la documentación , tutorial de fuentes personalizadas de Android para obtener más información
fuente
getResources()
? EDITAR : Esta línea al final de su respuesta funcionó para mí:Typeface typeface = ResourcesCompat.getFont(context, R.font.myfont);
android:fontWeight
yapp:fontWeight
Tuve que analizar
/system/etc/fonts.xml
en un proyecto reciente. Aquí están las familias de fuentes actuales a partir de Lollipop:Aquí está el analizador (basado en FontListParser ):
Siéntase libre de usar la clase anterior en su proyecto. Por ejemplo, puede dar a sus usuarios una selección de familias de fuentes y establecer el tipo de letra según sus preferencias.
Un pequeño ejemplo incompleto:
fuente
getSystemFonts()
, recibí una excepciónorg.xmlpull.v1.XmlPullParserException: END_TAG expected (position:START_TAG (empty) <axis tag='wdth' stylevalue='100.0'>@219:51 in java.io.InputStreamReader@f001fb3)
Android no le permite establecer fuentes personalizadas desde el diseño XML. En su lugar, debe agrupar el archivo de fuente específico en la carpeta de activos de su aplicación y configurarlo mediante programación. Algo como:
Tenga en cuenta que solo puede ejecutar este código después de llamar a setContentView (). Además, solo algunas fuentes son compatibles con Android, y deben estar en formato
.ttf (TrueType)
o.otf (OpenType)
. Incluso entonces, algunas fuentes pueden no funcionar.Esta es una fuente que definitivamente funciona en Android, y puede usarla para confirmar que su código está funcionando en caso de que Android no admita su archivo de fuente.
Actualización de Android O: Esto ahora es posible con XML en Android O , según el comentario de Roger.
fuente
Para configurar Roboto mediante programación:
fuente
Es lo mismo que
android:typeface
.las fuentes incorporadas son:
Ver android: tipo de letra .
fuente
setTypeface()
. A saberfontFamily
,typeface
ytextStyle
. Pero por mi vida no puedo entender cómo se combinan con precisión para resolver una instancia de tipografía concreta. ¿Alguien ha descubierto esto? La documentación de Google es menos que útil ...Si lo quieres programáticamente, puedes usar
Donde
SANS_SERIF
puedes usar:DEFAULT
DEFAULT_BOLD
MONOSPACE
SANS_SERIF
SERIF
Y donde
ITALIC
puedes usar:BOLD
BOLD_ITALIC
ITALIC
NORMAL
Todo está indicado en desarrolladores de Android
fuente
Estoy usando la excelente biblioteca Caligrafía de Chris Jenx diseñada para permitirle usar fuentes personalizadas en su aplicación de Android. ¡Darle una oportunidad!
fuente
Lo que quieres no es posible. Debe tener que establecer
TypeFace
su Código.En
XML
lo que puedes hacer esaparte de esto, no puedes jugar mucho con las fuentes en XML. :)
Para ello
Arial
, debe establecer el tipo de letra en su código.fuente
Una manera fácil de administrar las fuentes sería declararlas a través de recursos, como tales:
Esto se basa en el código fuente aquí y aquí
fuente
Dinámicamente, puede configurar la familia de fuentes similar a android: fontFamily en xml usando esto,
Esta es la lista de la familia de fuentes predeterminada utilizada, use cualquiera de esto reemplazando la cadena de comillas dobles "sans-serif-medium"
"mycustomfont.ttf" es el archivo ttf. La ruta estará en src / assets / fonts / mycustomfont.ttf , puede consultar más sobre la fuente predeterminada en esta familia de fuentes predeterminadas
fuente
establecer fácilmente la fuente en cualquier vista de texto desde res> directorio de fuentes mediante programación
fuente
Creo que llego demasiado tarde, pero tal vez esta solución sea útil para otros. Para usar una fuente personalizada, coloque su archivo de fuente en su directorio de fuentes.
fuente
Con un poco de prueba y error aprendí lo siguiente.
Dentro del * .xml puede combinar las fuentes de archivo con las siguientes funciones, no solo con la tipografía:
Con estos dos estilos, no había necesidad de usar tipografía en ningún otro caso. El rango de combinaciones es mucho más grande con fontfamily & textStyle.
fuente
El valor válido de android: fontFamily se define en /system/etc/system_fonts.xml(4.x) o /system/etc/fonts.xml(5.x). Pero el fabricante del dispositivo puede modificarlo, por lo que la fuente real utilizada al establecer el valor de fontFamily depende del archivo mencionado anteriormente del dispositivo especificado.
En AOSP, la fuente Arial es válida pero debe definirse usando "arial" no "Arial", por ejemplo android: fontFamily = "arial" . Eche un vistazo rápido a system_fonts.xml de Kitkat
//////////////////////////////////////////////////// //////////////////////////
Hay tres atributos xml relevantes para definir una "fuente" en el diseño : android: fontFamily , android: typeface y android: textStyle . La combinación de "fontFamily" y "textStyle" o "typeface" y "textStyle" se puede usar para cambiar la apariencia de la fuente en el texto, por lo que se usa solo. Fragmento de código en TextView.java como este:
Del código podemos ver:
fuente
Aquí hay un modo más fácil que puede funcionar en algunos casos. El principio es agregar una TextVview no visible en su diseño xml y obtener su typeFace en el código de Java.
El diseño en el archivo xml:
Y el código de Java:
Me ha funcionado (dentro de un TextSwitcher, por ejemplo).
fuente
Prueba esto:
fuente
También puede hacerlo agregando una carpeta de fuentes en el directorio res como se muestra a continuación.
Luego, seleccionando Fuente como tipo de recurso.
Puede encontrar fuentes disponibles en https://www.1001fonts.com/ , y luego extraer los archivos TTF a este directorio de fuentes.
Finalmente, simplemente cambie el archivo XML que contiene su vista de texto agregando android: fontFamily: "@ font / urfontfilename"
fuente
app:fontFamily=
, sin embargo, todo lo demás es igual.Una forma simple es agregar la fuente deseada en el proyecto.
Vaya a Archivo-> Nuevo-> Nuevo directorio de recursos Seleccionar fuente
Esto creará un nuevo directorio, fuente , en sus recursos.
Descargue su fuente (.ttf) . Yo uso https://fonts.google.com para lo mismo
Agregue eso a su carpeta de fuentes y luego úselos en XML o mediante programación.
XML -
Programaticamente
fuente
ResourcesCompat.getFont
método de usofuente
Si desea utilizar un TextView en tantos lugares con la misma familia de fuentes, amplíe la clase TextView y configure su fuente de esta manera:
Y luego use esta clase personalizada en xml para TextView como esta: -
fuente
Si está utilizando Android Studio 3.5+, cambiar la fuente es muy simple. Seleccione el widget de texto en la vista Diseño y verifique fontFamily en la ventana de atributos. El menú desplegable de valores contiene todas las fuentes disponibles de las cuales puede seleccionar una. Si está buscando fuentes de Google, haga clic en la opción Más fuentes.
Ventana de atributos
Fuentes de Google
fuente
Solo quiero mencionar que el infierno con las fuentes dentro de Android está a punto de terminar, porque este año en Google IO finalmente obtuvimos esto -> https://developer.android.com/preview/features/working-with-fonts. html
Ahora hay un nuevo recurso, escriba una fuente y puede colocar todas las fuentes de su aplicación dentro de la carpeta res / fonts y acceder luego con R.font.my_custom_font, al igual que puede acceder a los valores de res de cadena , valores de res extraíbles , etc. Incluso tiene la posibilidad para crear un archivo xml de fuente , que se configurará con sus fuentes personalizadas (sobre cursiva, negrita y subrayado).
Lea el enlace de arriba para más información. Veamos el soporte.
fuente
Redman
la respuesta del usuario anterior sigue siendo una parte necesaria de la solución.Hay una buena biblioteca disponible para esto
fuente
El nuevo recurso de fuente permite configurar directamente
font
usandofuente
Estableces el estilo
res/layout/value/style.xml
así:y para usar este estilo en
main.xml
el uso de archivos:fuente
Para Android-Studio 3 y superior, puede usar este estilo y luego todo
textView
cambios de fuente en la aplicación.crea este estilo en tu
style.xml
:Luego úsalo en tu tema:
fuente
La forma más fácil de agregar la fuente mediante programación a un TextView es, primero, agregar el archivo de fuente en su carpeta de Activos en el proyecto. Por ejemplo, su ruta de fuente se ve así:
assets/fonts/my_font.otf
Y agréguelo a TextView como:
Kotlin
Java
fuente
Aquí puede ver todos los valores disponibles de fontFamily y los nombres de los archivos de fuentes correspondientes (este archivo se usa en Android 5.0+). En el dispositivo móvil, puede encontrarlo en:
(Para Android 4.4 y versiones posteriores con esta versión, pero creo que
fonts.xml
tiene un formato más claro y fácil de entender).Por ejemplo,
El atributo
name="sans-serif"
de nombre de lafamily
etiqueta definió el valor que puede usar en android: fontFamily.La
font
etiqueta define los archivos de fuentes correspondientes.En este caso, puede ignorar la fuente que se encuentra debajo
<!-- fallback fonts -->
, está usando la lógica de respaldo de las fuentes.fuente