web-dev-qa-db-ja.com

TextViewでのaddFontWeightStyle NoSuchMethodException

私はプロジェクトにAndroidxライブラリを使用していますfonttextviewに設定したいので、任意のフォントを任意のフォントに適用すると- Textviewシステムが提供するコンポーネントよりも

TypefaceCompatApi21Impl:Java.lang.NoSuchMethodException Java.lang.NoSuchMethodException:addFontWeightStyle [class Java.lang.String、int、boolean]

実行時のこのタイプのエラーですが、アプリはクラッシュしません。

それで、このエラーを克服する方法。

:Android x依存関係がなくても適切に機能します。

コードの下:

<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"/>

これがスタイルです

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

私はプログラムででもフォントを設定しています

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

まだこのエラーが発生します

47
Ankit Dubariya

書体をプログラムで設定するときに最後のパラメーターを削除しようとしましたか?

getTitleView().setTypeface(typeFace)

の代わりに

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

内部的にfontStyleを使用しています

1
Franrc

スタイルの親は@Android:style/TextAppearance.Smallをクリックします。 2つのアイテムのみが表示されます

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

したがって、エラーは正しいです。そのスタイルにはfontFamilyプロパティが含まれていません。

親テーマを変更してみてください

<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