J'ai essayé toutes les options mentionnées dans les liens ci-dessous https://medium.com/programming-lite/using-custom-font-as-resources-in-android-app-6331477f8f57 https://medium.com/@suragch/ utilisation-d'une-police-personnalisée-dans-votre-application-android-cc4344b977a5
Mais quand même, l'application se bloque ne peut pas utiliser la police personnalisée Erreur de gonflage de la classe EditText mais si je supprime la police personnalisée, cela fonctionne bien
3 Réponses :
J'ai pu contourner ce problème en divisant mon fichier de ressources de polices en deux en fonction de la version de l'API, où l'api 26+ utilise simplement les attributs android:font*
et en dessous de l'api 26, nous utilisons les attributs app:font*
:
app / src / main / res / font / source_sans_pro.xml
<font-family xmlns:android="http://schemas.android.com/apk/res/android"> <!-- light --> <font android:font="@font/source_sans_pro_light" android:fontStyle="normal" android:fontWeight="300" /> <font android:font="@font/source_sans_pro_light_italic" android:fontStyle="italic" android:fontWeight="300" /> <!-- normal --> <font android:font="@font/source_sans_pro_regular" android:fontStyle="normal" android:fontWeight="400" /> <font android:font="@font/source_sans_pro_regular_italic" android:fontStyle="italic" android:fontWeight="400" /> <!-- bold --> <font android:font="@font/source_sans_pro_semibold" android:fontStyle="normal" android:fontWeight="500" /> <font android:font="@font/source_sans_pro_semibold_italic" android:fontStyle="italic" android:fontWeight="500" /> </font-family>
app / src / main / res / font-v26 / source_sans_pro.xml
<font-family xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <!-- light --> <font app:font="@font/source_sans_pro_light" app:fontStyle="normal" app:fontWeight="300" /> <font app:font="@font/source_sans_pro_light_italic" app:fontStyle="normal" app:fontWeight="300" /> <!-- normal --> <font app:font="@font/source_sans_pro_regular" app:fontStyle="normal" app:fontWeight="400"/> <font app:font="@font/source_sans_pro_regular_italic" app:fontStyle="italic" app:fontWeight="400" /> <!-- bold --> <font app:font="@font/source_sans_pro_semibold" app:fontStyle="normal" app:fontWeight="500"/> <font app:font="@font/source_sans_pro_semibold_italic" app:fontStyle="italic" app:fontWeight="500"/>
Je ne l'ai pas encore suivi jusqu'à une mise à jour d'Android Q ou s'il s'agit d'un bogue dans l'une des versions les plus récentes d'Androidx. Je crois qu'il s'agit d'une régression ou d'un nouveau bogue dans appcompat 1.2.0-alpha03 ou dans le matériel 1.1.0
J'ai rencontré un problème similaire, ce que j'ai fait est - supprimer le fichier xml et utiliser directement le nom de la police (sans extension) qui était dans ttf. exemple -
android:fontFamily="@font/comfortaa_bold" android:fontFamily="@font/comfortaa_italic"
Si nous utilisons l'option de police EditText via une erreur dans la mise à jour Q, utilisez donc AppCompactEditText pour accepter la contrainte fort directement dans la page XML