sziraqui
https://developer.android.com/preview/features/working-with-fonts.html
Android API 26 es compatible con esto, pero ¿tenemos una biblioteca de soporte que pueda proporcionar el uso de fuentes como recurso en resolución? [ font in XML ] En caso afirmativo, ¿hasta qué API es compatible?
Estoy hablando de la función Android O SDK que nos permite configurar la fuente en XML como se indica en el enlace anterior. Esta no es una característica nativa en MM, estoy seguro.
Yuri Misyac
Para admitir la familia de fuentes en API
inferior a 26, necesitamos usar
<font app:fontStyle="normal" app:fontWeight="400" app:font="@font/myfont-Regular"/>
en lugar de
<font android:fontStyle="normal" android:fontWeight="400" android:font="@font/myfont-Regular"/>
-
Gracias. Esto debe marcarse como la respuesta correcta.
– Sudhir Singh Khanger
11 de abril de 2019 a las 10:47
-
Como se indica en los documentos: developer.android.com/guide/topics/ui/look-and-feel/…
– Álvaro Santisteban
18 de agosto de 2022 a las 11:22
Según Google es compatible con Android 4.0+ (API 14+) siempre que se cumplan estas condiciones:
- estas usando el biblioteca de apoyo versión 26.0.0-beta1 o después
- Tu estas usando AppCompat
Fuentes:
Fuentes en XML: uso de la biblioteca de soporte
Historial de revisión de la biblioteca de soporte
Esperaba poder usar esto en widgets de aplicaciones en versiones de Android anteriores a la 8 (API 26), sin embargo, no es posible, ya que AppCompatTextView no se puede usar en widgets de aplicaciones. Ninguna de las alternativas de terceros a las ‘Fuentes en XML’ de Android O, como el Caligrafía el trabajo de la biblioteca en los widgets de la aplicación tampoco.
La única alternativa para los widgets de aplicaciones es usar un Vista de imagen en lugar de un Vista de texto y usando VistasRemotas métodos tales como setImageViewUri(…) y setImageViewBitmap(…)los cuales son problemáticos.
-
Gracias. ¿Por qué otros decían que es una característica nativa? Estoy usando SDK Android Studio 2.3.2. Intenté usar @font/arial.ttf. No funcionó. Estaba usando la biblioteca de soporte versión 25.3.1. Ahora sé lo que estaba mal.
– sziraqui
21 de julio de 2017 a las 9:37
-
¿Esto funcionó? algunas personas dicen que debe actualizar a Android Studio 3 para que esto funcione.
– usuario1506104
20 de diciembre de 2017 a las 12:50
-
Gracias por la anotación. Cambié mi
a y ahora funciona. – tmm1
9 de enero de 2018 a las 22:17
Jemshit Iskenderov
Para completar la respuesta de Yuri, las fuentes son compatibles con API 16. Para crear una familia de fuentes (donde se especifican diferentes pesos de fuentes), debe crear my_font_family.xml
por debajo /res/fuente/ como esta escrito en el documento:
<font-family xmlns:app="http://schemas.android.com/apk/res-auto">
<font app:fontStyle="normal" app:fontWeight="400" app:font="@font/myfont_regular"/>
<font app:fontStyle="normal" app:fontWeight="600" app:font="@font/myfont_semi_bold" />
<font app:fontStyle="italic" app:fontWeight="400" app:font="@font/myfont_italic" />
</font-family>
Para usar esto en TextView
xml, debe usar app:fontFamily="@font/my_font_family"
ten cuidado con app:
en lugar de android:
.
Para elegir específico fontWeight
puedes usar android:textFontWeight="200"
pero solo funciona en API>=28. Para elegir una fuente diferente según el peso antes de API 28, tiene dos opciones. Puedes usar android:textStyle="bold"
para especificar solo “normal/cursiva/negrita”, pero no el peso exacto. O puede usar directamente el peso específico de la fuente como esta: app:fontFamily="@font/myfont_semi_bold"
.
Tenga en cuenta: si está utilizando una vista de texto personalizada, YourTextView
en su aplicación, tiene que extenderse AppCompatTextView
y no simplemente android.widget.TextView
-
Has probado
textFontWeight
? Porque incluso en API 28 no me funciona.– Florián Walther
14 de abril de 2019 a las 18:02
-
No me funciona, lo estoy ejecutando en un emulador. Estoy usando la implementación ‘androidx.appcompat:appcompat:1.0.2’ y el tema MaterialComponents
– Ganesh Chowdhary Sadanala
9 de agosto de 2019 a las 14:07
-
@GaneshChowdharySadanala Verifique la nota agregada, eso podría ayudarlo.
– JaydeepW
29 de marzo de 2020 a las 6:30
-
La solución textStyle no funciona en Android 5 con biblioteca de soporte
– AAverin
12 de abril de 2021 a las 14:34
Algunos usuarios llegarán a esta página en busca de instrucciones para usar fuentes personalizadas en su aplicación desde xml. Así es como lo hice:
El directorio de recursos de fuentes no está presente de forma predeterminada. Puede crearlo manualmente siguiendo las documentación aquí [too much work]
O use el selector de fuente de GUI-
-
Seleccione un TextView en la pestaña Diseño.
-
Abrir menú desplegable de
fontFamily
atributo xml. -
Desplácese hacia abajo hasta “Más fuentes”.
-
Elija una “Fuente descargable” de la ventana emergente que aparece.
Android Studio creará automáticamente un directorio de recursos de fuentes con las declaraciones necesarias mencionadas en la documentación anterior. Después de este paso, puede copiar su archivo de fuente personalizado (por ejemplo, myfont.ttf) en el directorio de fuentes y configurar la fuente deseada desde xml, por ejemplo:
<TextView
android:fontFamily="@font/myfont"
android:id="@+id/aboutus_head_textview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/who_are_we" />
Si desea utilizar la misma fuente en toda su aplicación, puede configurar fontFamily su AppTheme en styles.xml:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<!-- custom font for the entire app -->
<item name="fontFamily">@font/myfont</item>
</style>
[ prefix fontFamily with android:
if above did not work ]
Capturas de pantalla:
Nota: esta respuesta asume que está utilizando Android Studio 3+ y la biblioteca de soporte versión 26+
Aquí hay un ejemplo, min sdk support 18 (en la aplicación)
-
¿Es posible incluir APIs más antiguas?
– rraallvv
24 de junio de 2019 a las 15:44
ValdaXD
Esta podría ser una forma no deseada de hacerlo, pero si tiene una fuente global (tipo de letra) en xml, puede crear una vista de texto y obtener el tipo de letra desde allí.
TextView dummy = new TextView(context);
doSomethingWithTheTypeface(dummy.getTypeface());
-
¿Es posible incluir APIs más antiguas?
– rraallvv
24 de junio de 2019 a las 15:44
Estoy usando esta función en una de mis aplicaciones, que admite API 9 a API 18. No hay limitación, que yo sepa. Dejé de admitir API 8, pero supongo que también habría funcionado.
– Phantommaxx
12 de junio de 2017 a las 18:13
¿Qué biblioteca ha agregado a gradle?
– sziraqui
12 de junio de 2017 a las 18:15
NINGUNO. Es una característica nativa. Por cierto, Eclipse no necesita toda esa “cosa de Gradle”;)
– Phantommaxx
12 de junio de 2017 a las 18:15
Creo que me están malinterpretando. Estoy hablando de la función “fuente en XML” que se introdujo en O. Pregunta editada para aclarar
– sziraqui
12/06/2017 a las 18:20
with some little trick
!= una característica nativa– sziraqui
22 de julio de 2017 a las 20:21