android-fontFamily在androidx上不起作用

时间:2019-10-28 14:39:25

标签: android android-theme android-styles androidx android-fonts

奇怪的是,为什么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转换为应用程序紧凑版时,它可以工作:

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

有什么办法解决这个问题?如何在不为每个视图设置字体系列的情况下在整个应用程序中使用字体?

2 个答案:

答案 0 :(得分:11)

您可能会遇到3件事情中的1件或更多:

  1. 您正在设置android:fontFamily,但未在主题中设置fontFamily。确保您同时拥有:
<item name="fontFamily">@font/iransans</item>
<item name="android:fontFamily">@font/iransans</item>
  1. 如果您在较旧的API级别上运行,则可能会遇到此错误,并且升级到androidx.appcompat依赖项可能会达到目的:

    https://developer.android.com/jetpack/androidx/releases/appcompat#1.1.0-alpha02

  2. 如果您在styles.xml中定义了其他任何主题,并且TextView的父主题使用单独的主题,则该主题可能优先于fontFamily视图上的属性(我尚未确定原因,但这是我遇到的这种情况)。直接在我的android:theme上将TextView设置为定义字体系列的样式就可以了。

<TextView
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:theme="@style/MyCustomFontTextAppearance" />

在styles.xml中:

<style name="MyCustomFontTextAppearance" parent="TextAppearance.AppCompat.Body1">
    <item name="fontFamily">@font/iransans</item>
    <item name="android:fontFamily">@font/iransans</item>
</style>

答案 1 :(得分:0)

首先,您需要将 .ttf 文件添加到名为 font 的res添加目录文件中 将该 .ttf 文件添加到其中。然后在您的XML中添加 android:fontFamily =“ @ font / poppinsregular”

类似,如下:

<TextView
         android:id="@+id/txt"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_marginStart="@dimen/dp_40"
         android:layout_marginLeft="@dimen/dp_40"
         android:layout_marginEnd="@dimen/dp_10"
         android:layout_marginRight="@dimen/dp_10"
         android:fontFamily="@font/poppinsregular"
         android:gravity="center"
         android:text="24/06/2019,03:19 Pm"
         android:textAlignment="textStart"
         android:textColor="@color/black"
         android:textSize="@dimen/sp_12" />

就足够了。