主题的字体家族资源未应用于TextViews

问题描述 投票:0回答:2

我想设置多个android:textAppearance中的TextViews。为此,我声明了以下样式:

<style name="TextAppearance.MyTheme.Headline1" parent="TextAppearance.MaterialComponents.Headline1">
    <item name="android:fontFamily">@font/montserrat</item>
    <item name="android:textStyle">normal</item>
    <item name="android:textFontWeight">400</item>
    <item name="android:textSize">@dimen/text_size_215</item>
</style>

说出的样式将被设置为我主题中的attrtextAppearanceHeadline

<item name="textAppearanceHeadline1">@style/TextAppearance.MyTheme.Headline1</item>

字体家族XML的编写方式如下:

<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <font
        app:fontStyle="normal"
        app:fontWeight="200"
        app:font="@font/montserrat_extralight" />

    <font
        app:fontStyle="normal"
        app:fontWeight="400"
        app:font="@font/montserrat_regular" />

    <font
        app:fontStyle="normal"
        app:fontWeight="500"
        app:font="@font/montserrat_medium" />

    <font
        app:fontStyle="normal"
        app:fontWeight="600"
        app:font="@font/montserrat_semibold" />
</font-family>

所有@font/montserrat_*参考都是我包含在资源文件夹中的.ttf文件。然后,我将使用attr值设置为要设置样式的TextView样式,如下所示:

<TextView
    android:id="@+id/textView3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Writing Words"
    android:textAppearance="?attr/textAppearanceHeadline1"
    app:layout_constraintEnd_toEndOf="@+id/headingView"
    app:layout_constraintStart_toStartOf="@+id/headingView"
    app:layout_constraintTop_toBottomOf="@+id/headingView" />

问题是,字体系列和字体粗细应用不正确(它们更改为默认字体系列和字体粗细)。尺寸已正确应用。我在这里做错了吗?

UPDATE

[当我尝试仅通过android:textAppearancestyleTextView设置为?attr/textAppearanceHeadline1时,它没有设置字体系列和字体粗细。但是,当我在android:fontFamily旁边设置android:fontWeightandroid:textAppearance时,它可以工作。在style旁边设置那些无效。为什么呢?发生了什么事?

android textview android-resources android-fonts
2个回答
0
投票

可能在您的xml中存在viewGroup(您的TextView是子级之一),其样式具有android:fontFamily覆盖您的android:textAppearance的样式>


0
投票

显然,我也必须重写fontFamily。以我的样式覆盖fontFamily可以使其正常工作。因此样式如下。

© www.soinside.com 2019 - 2024. All rights reserved.