web-dev-qa-db-fra.com

addFontWeightStyle NoSuchMethodException sur TextView

J'utilise Androidx bibliothèque pour mon projet, et je veux définir une police à textview, donc quand j'applique une police à n'importe laquelle - Textview composants que le système me donne

TypefaceCompatApi21Impl: Java.lang.NoSuchMethodException Java.lang.NoSuchMethodException: addFontWeightStyle [classe Java.lang.String, int, boolean]

ce type d'erreur lors de l'exécution, mais l'application ne se bloque pas.

Alors, comment surmonter cette erreur.

Remarque: Cela fonctionnera correctement sans Android x dépendance.

En dessous de mon code:

<androidx.appcompat.widget.AppCompatTextView
        Android:id="@+id/menu_tv_title"
        style="@style/font_work_sans_medium"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:layout_gravity="center"
        Android:maxLines="1"
        Android:ellipsize="end"
        Android:paddingEnd="@dimen/_12sdp"
        Android:paddingStart="@dimen/_12sdp"
        Android:textColor="@Android:color/black"
        Android:textSize="17sp"
        Android:gravity="center"
        tools:text="title"
        tools:visibility="gone"/>

Voici le style

<style name="font_work_sans_medium" parent="@Android:style/TextAppearance.Small">
    <item name="Android:fontFamily">@font/work_sans_medium</item>
</style>

Je mets également la police par par programme comme ceci

var typeFace: Typeface? = ResourcesCompat.getFont(context, R.font.work_sans_bold)
    getTitleView().setTypeface(typeFace, Typeface.NORMAL)

toujours cette erreur

47
Ankit Dubariya

Avez-vous essayé de supprimer le dernier paramètre lorsque vous définissez la police par programmation?

getTitleView().setTypeface(typeFace)

au lieu de

getTitleView().setTypeface(typeFace, Typeface.NORMAL)

utilise en interne fontStyle

1
Franrc

Votre parent de style est @Android:style/TextAppearance.Small cliquez dessus. Vous ne verrez que deux articles

<item name="textSize">14sp</item>
        <item name="textColor">?textColorSecondary</item>

L'erreur est donc correcte. ce style n'a pas de propriété fontFamily à l'intérieur.

essayez de changer votre thème parent en

<style name="font_work_sans_medium" parent="Base.Theme.AppCompat.Light.DarkActionBar">
 <item name="Android:fontFamily">@font/work_sans_medium</item>
</style>
1
Tejas Pandya