我已经尝试了下面链接中提到的所有选项https://medium.com/programming-lite/using-custom-font-as-resources-in-android-app-6331477f8f57https://medium.com/@suragrch/使用自定义字体在您的安卓-app-cc4344b977a5
但是,应用程序仍然崩溃,无法使用自定义字体错误膨胀类EditText,但如果我删除自定义字体,它可以正常工作
我可以通过基于API版本将字体资源文件拆分为两个文件来解决这一问题,其中API 26+只使用android:font*
属性,在API 26下面我们使用app:font*
属性:
app/src/main/res/font/source_sans_pro.xml
<font-family xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<!-- light -->
<font
app:font="@font/source_sans_pro_light"
app:fontStyle="normal"
app:fontWeight="300" />
<font
app:font="@font/source_sans_pro_light_italic"
app:fontStyle="normal"
app:fontWeight="300" />
<!-- normal -->
<font
app:font="@font/source_sans_pro_regular"
app:fontStyle="normal"
app:fontWeight="400"/>
<font
app:font="@font/source_sans_pro_regular_italic"
app:fontStyle="italic"
app:fontWeight="400"
/>
<!-- bold -->
<font
app:font="@font/source_sans_pro_semibold"
app:fontStyle="normal"
app:fontWeight="500"/>
<font
app:font="@font/source_sans_pro_semibold_italic"
app:fontStyle="italic"
app:fontWeight="500"/>
app/src/main/res/font-v26/source_sans_pro.xml
<font-family xmlns:android="http://schemas.android.com/apk/res/android">
<!-- light -->
<font
android:font="@font/source_sans_pro_light"
android:fontStyle="normal"
android:fontWeight="300" />
<font
android:font="@font/source_sans_pro_light_italic"
android:fontStyle="italic"
android:fontWeight="300" />
<!-- normal -->
<font
android:font="@font/source_sans_pro_regular"
android:fontStyle="normal"
android:fontWeight="400" />
<font
android:font="@font/source_sans_pro_regular_italic"
android:fontStyle="italic"
android:fontWeight="400" />
<!-- bold -->
<font
android:font="@font/source_sans_pro_semibold"
android:fontStyle="normal"
android:fontWeight="500" />
<font
android:font="@font/source_sans_pro_semibold_italic"
android:fontStyle="italic"
android:fontWeight="500" />
</font-family>
我还没有追踪到安卓Q的更新,或者它是否是一个新的androidx版本中的错误。我认为这是appcompat 1.2.0-alpha03或材料1.1.0 中的回归或新错误
我也遇到过类似的问题,我所做的就是删除xml文件并直接使用ttf中的字体名称(不带扩展名(。示例-
android:fontFamily="@font/comfortaa_bold"
android:fontFamily="@font/comfortaa_italic"
如果我们在Q更新中使用EditText字体选项,那么使用AppCompactEditText直接在XML页面中接受fort约束