android - android - fontFamily 无法在 androidx 上运行
问题描述
很奇怪为什么 fontFamily 不能在 androidX 上工作。
这是我的代码:
<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" />
上面的代码根本不影响字体,当我将 textview 转换为 app compact 时,它可以工作:
<androidx.appcompat.widget.AppCompatTextView
我想设置我的整个应用程序字体,但它没有按我预期的那样工作:
<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>
有什么办法可以解决这个问题吗?如何在不为每个视图设置字体系列的情况下在整个应用程序中使用我的字体?
解决方案
您可能会遇到 3 件事中的 1 件以上:
- 您正在设置
android:fontFamily
但未设置fontFamily
在您的主题中。确保你有两个:
<item name="fontFamily">@font/iransans</item>
<item name="android:fontFamily">@font/iransans</item>
如果您在较旧的 API 级别上运行,则可能会遇到此错误,升级到 androidx.appcompat 依赖项可能会解决问题:
https://developer.android.com/jetpack/androidx/releases/appcompat#1.1.0-alpha02
如果您在 中定义了任何其他主题
styles.xml
,并且您的父TextView
主题使用单独的主题,则该主题可能优先fontFamily
于视图上的属性(我尚未确定原因,但这是我正在运行的场景进入我自己)。将android:theme
my 直接设置为TextView
定义字体系列的样式就可以了。
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:theme="@style/MyCustomFontTextAppearance" />
在样式.xml 中:
<style name="MyCustomFontTextAppearance" parent="TextAppearance.AppCompat.Body1">
<item name="fontFamily">@font/iransans</item>
<item name="android:fontFamily">@font/iransans</item>
</style>
推荐阅读
- mongodb - Connect to Mongodb replica set from another docker container failed
- javascript - d3.js 刻度值未按预期工作
- sed - 如何用存储在变量中的值替换单引号内的字符串?
- reactjs - React:根据屏幕位置更改元素类
- python - pandas 中的条件计算
- shopify - 如何让 Shopify 在将 cart.total_order 值应用于一段代码之前将其转换为美元?
- octobercms - 在octobercms中单击提交时,如何使用表中的其他用户输入字段数据保存多行数据?
- python - 如何使用烧瓶结合vue
- flutter - 有条件地显示预定通知
- javascript - 根据从承诺中解析的数据更改/控制复选框选中状态