web-dev-qa-db-fra.com

android - FontNagily ne fonctionne pas sur Androidx

C'est très étrange que la fondue ne fonctionne pas sur Androidx.

ceci est mon code:

   <TextView
        Android:id="@+id/textView"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_marginTop="24dp"
        Android:text="testing "
        Android:textSize="17sp"
        Android:fontFamily="@font/iransans"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

le code ci-dessus ne fait pas du tout confiance de la police, lorsque je convertit la TextView en App compact, alors cela fonctionne:

<androidx.appcompat.widget.AppCompatTextView

je voulais mettre ma police d'application entière mais cela ne fonctionne pas comme prévu:

<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>

    <item name="Android:fontFamily">@font/iransans</item>
</style>

est-ce qu'il y a un moyen de résoudre ceci ? Comment puis-je utiliser ma police dans une application entière sans régler la famille de polices pour chaque vue?

8
Navid Abutorab

Vous courez potentiellement dans 1+ de 3 choses:

  1. Vous définissez Android:fontFamily mais pas définir fontFamily dans votre thème. Assurez-vous que vous avez les deux:
<item name="fontFamily">@font/iransans</item>
<item name="Android:fontFamily">@font/iransans</item>
  1. Si vous utilisez des niveaux d'API plus anciens, vous pouvez rencontrer ce bogue et une mise à niveau de la dépendance Androidx.appCompat pourrait faire le truc:

    https://developer.android.com/jetpack/androidx/relases/appcompat#1.0-alpha02

  2. Si vous avez d'autres thèmes définis dans votre styles.xml, et le parent de votre TextView utilise un thème séparé, que le thème peut prendre la priorité sur l'attribut fontFamily sur la vue (je n'ai pas encore déterminé pourquoi, mais c'est le scénario je cours dans moi-même). Régler le Android:theme directement sur mon TextView à un style qui définit la famille de polices a fait l'affaire.

<TextView
     Android:layout_width="wrap_content"
     Android:layout_height="wrap_content"
     Android:theme="@style/MyCustomFontTextAppearance" />

dans styles.xml:

<style name="MyCustomFontTextAppearance" parent="TextAppearance.AppCompat.Body1">
    <item name="fontFamily">@font/iransans</item>
    <item name="Android:fontFamily">@font/iransans</item>
</style>
1
Barryrowe