Android文本字重API级别低于28

3

我有一个TextView的样式资源

<style name="AppText.Note.Medium">
    <item name="android:textFontWeight" tools:targetApi="p">500</item>
</style>

但它只能在API级别28或更高版本上使用。有没有办法在API级别23上使用它?或者可能有其他替代方案吗?


请查看这个答案:https://dev59.com/NFYN5IYBdhLWcg3w-cjx#55693021 - TysonSubba
2个回答

2

支持在API 26以下使用字体族

  <item name="fontWeight">500</item>

属性 fontWeight 仅在 API 级别 26 及更高版本中使用(当前最低级别为 21)。 - FreePhoenix888
@FreePhoenix 使用 app:fontWeight="500" 替代 android:fontWeight="500" - Dinesh
@Dinesh 当你设置它时,没有任何变化,只有 android:textFontWeight 会生效,但它仅适用于API 28+。 - user924

1

这适用于所有的API级别

<?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:font="@font/sdfglay_bold"
        app:fontWeight="700"/>
    <font
        app:font="@font/sdfglay_light"
        app:fontWeight="300"/>
    <font
        app:font="@font/sdfglay_regular"
        app:fontWeight="400"/>
    <font
        app:font="@font/sdfglay_medium"
        app:fontWeight="500"/>
    <font
        app:font="@font/sdfglay_semibold"
        app:fontWeight="600"/>

使用这种字体族替代

<com.google.android.material.textview.MaterialTextView
        android:id="@+id/postDesc"
        android:layout_width="0dp"
        android:fontFamily="@font/sdfglay_light"
        android:layout_height="wrap_content"
        android:layout_marginRight="90dp"
        android:ellipsize="end"
        android:paddingVertical="8dp"/>

直接使用指定字重的字体

        android:fontFamily="@font/sdfglay_light"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接