私はプロジェクトにAndroidxライブラリを使用していますfontをtextviewに設定したいので、任意のフォントを任意のフォントに適用すると- 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)
まだこのエラーが発生します
書体をプログラムで設定するときに最後のパラメーターを削除しようとしましたか?
getTitleView().setTypeface(typeFace)
の代わりに
getTitleView().setTypeface(typeFace, Typeface.NORMAL)
内部的にfontStyleを使用しています
スタイルの親は@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>