gpt4 book ai didi

android - 如何在 XML 中为字体使用指定的权重

转载 作者:IT老高 更新时间:2023-10-28 21:47:02 24 4
gpt4 key购买 nike

使用 Fonts in 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 android:font="@font/archivo_narrow_regular" android:fontWeight="400" android:fontStyle="normal"
app:font="@font/archivo_narrow_regular" app:fontWeight="400" app:fontStyle="normal"/>

<font android:font="@font/archivo_narrow_regular_italic" android:fontWeight="400" android:fontStyle="italic"
app:font="@font/archivo_narrow_regular_italic" app:fontWeight="400" app:fontStyle="italic"/>

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

<font android:font="@font/archivo_narrow_medium_italic" android:fontWeight="500" android:fontStyle="italic"
app:font="@font/archivo_narrow_medium_italic" app:fontWeight="500" app:fontStyle="italic"/>

<font android:font="@font/archivo_narrow_semibold" android:fontWeight="600" android:fontStyle="normal"
app:font="@font/archivo_narrow_semibold" app:fontWeight="600" app:fontStyle="normal"/>

<font android:font="@font/archivo_narrow_semibold_italic" android:fontWeight="600" android:fontStyle="italic"
app:font="@font/archivo_narrow_semibold_italic" app:fontWeight="600" app:fontStyle="italic"/>

<font android:font="@font/archivo_narrow_bold" android:fontWeight="700" android:fontStyle="normal"
app:font="@font/archivo_narrow_bold" app:fontWeight="700" app:fontStyle="normal"/>

<font android:font="@font/archivo_narrow_bold_italic" android:fontWeight="700" android:fontStyle="italic"
app:font="@font/archivo_narrow_bold_italic" app:fontWeight="700" app:fontStyle="italic"/>

</font-family>

但我不知道如何实际使用这些权重;在 XML(布局/样式)文件或 Java 代码中。它们没有可用于 TextViewfontWeight 属性,而 TypefaceResourcesCompat.getFont(context, R.font.archivo_narrow) 创建的对象没有提到字体粗细。

我意识到我可以只指定特定的字体资源(即 R.font.archivo_narrow_semibold),但是在字体家族?


更新

一个新的静态create(Typeface family, int weight, boolean italic) API 级别 28 中添加了方法以及 getWeight()实例方法。这最终使得在 Java 代码中使用 fontWeight 属性成为可能;虽然仅适用于 API 级别 28 及更高版本,但我在支持库中没有找到任何类似物。

这很有用——并且表明 fontWeight 属性在过去没有任何用途——但我真的希望能够在 XML 样式中使用权重。

最佳答案

它看起来像 android 遵循 web 标准的字体管理和 android 应用程序的大小。

“font-weight”属性用于定义字体的粗细,例如常规或粗体。

但对于所有其他权重,使用的数字范围是 100 到 900。 Web 字体的挑战之一是大多数 Web 浏览器不能正确支持除普通和粗体之外的字体粗细。下表描述了权重到数字定义的可能映射:

100    Extra Light or Ultra Light
200 Light or Thin
300 Book or Demi
400 Normal or Regular
500 Medium
600 Semibold, Demibold
700 Bold
800 Black, Extra Bold or Heavy
900 Extra Black, Fat, Poster or Ultra Black

您可以阅读有关字体粗细的更多信息 here


cc_montserrat_bold.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
android:font="@font/montserrat_bold"
android:fontStyle="normal"
android:fontWeight="700"
app:font="@font/montserrat_bold"
app:fontStyle="normal"
app:fontWeight="700" />
<font
android:font="@font/montserrat_bolditalic"
android:fontStyle="italic"
android:fontWeight="700"
app:font="@font/montserrat_bolditalic"
app:fontStyle="italic"
app:fontWeight="700" />

</font-family>

cc_montserrat_regular.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
android:font="@font/montserrat_regular"
android:fontStyle="normal"
android:fontWeight="400"
app:font="@font/montserrat_regular"
app:fontStyle="normal"
app:fontWeight="400" />
<font
android:font="@font/montserrat_italic"
android:fontStyle="italic"
android:fontWeight="400"
app:font="@font/montserrat_italic"
app:fontStyle="italic"
app:fontWeight="400" />


</font-family>

Kotlin 用法:

val textView = dialog.findViewById<TextView>(android.R.id.message) as TextView
val typeface = ResourcesCompat.getFont(context,R.font.cc_montserrat_regular)
textView.typeface = typeface

Android 项目截图:

enter image description here

关于android - 如何在 XML 中为字体使用指定的权重,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46589519/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com