this question的答案中,用户列出了android:fontFamily和12个变量的值(见下文).这些价值观从何而来?android:fontFamily的文档没有在任何地方列出此信息(我判断了herehere).这些字符串列在Android styles.xml文件中的各个位置,但是这些字符串如何映射回Roboto字体呢?

从安卓4.1/4.2开始,以下是Roboto字体系列:

android:fontFamily="sans-serif"           // roboto regular  
android:fontFamily="sans-serif-light"     // roboto light  
android:fontFamily="sans-serif-condensed" // roboto condensed  
android:fontFamily="sans-serif-thin"      // roboto thin (android 4.2)  
android:fontFamily="sans-serif-medium"    // roboto medium (android 5.0)

再加上这个

android:textStyle="normal|bold|italic" 

可能有12种变体:

  • 有规律的
  • 斜体
  • 粗体
  • 粗体-italic
  • 光-italic
  • 薄的
  • 薄的-italic
  • 压缩正则
  • 浓缩斜体
  • 浓缩粗体
  • 浓缩粗体-italic

在我正在处理的应用程序的styles.xml文件中,有人将其列为字体系列,我很确定这是错误的:

<item name="android:fontFamily">Roboto-有规律的.ttf</item>

我想要正确设置我们应用程序的主题(包括正确使用fontFamily),并删除在我查看文件之前创建的一些样式中的所有冗余.

推荐答案

这些价值观从何而来?android:fontFamily的文档没有在任何地方列出此信息

这些确实没有在文档中列出.但是在"字体系列"一节中提到了here个.该文档列出了Android Jelly Bean 4.1的所有新公共API.

在风格上.我正在开发的应用程序中的xml文件有人将其列为字体系列,我很确定这是错误的:

是的,那是错的.您没有引用字体文件,您必须使用上面链接的文档中提到的字体名称.在这种情况下,应该是这样的:

<item name="android:fontFamily">sans-serif</item>

与前面提到的链接答案一样,有12种可能的变体:

安卓果冻豆(4.1)中添加的API 16:

Regular(默认值):

<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">normal</item> 

Italic:

<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">italic</item>

Bold:

<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">bold</item>

Bold-italic:

<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">bold|italic</item>

Light:

<item name="android:fontFamily">sans-serif-light</item>
<item name="android:textStyle">normal</item>

Light-italic:

<item name="android:fontFamily">sans-serif-light</item>
<item name="android:textStyle">italic</item>

Thin :

<item name="android:fontFamily">sans-serif-thin</item>
<item name="android:textStyle">normal</item>

Thin-italic :

<item name="android:fontFamily">sans-serif-thin</item>
<item name="android:textStyle">italic</item>

Condensed regular:

<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">normal</item>

Condensed italic:

<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">italic</item>

Condensed bold:

<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">bold</item>

Condensed bold-italic:

<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">bold|italic</item>

添加到Android棒棒糖(v5.0)-API 21:

Medium:

<item name="android:fontFamily">sans-serif-medium</item>
<item name="android:textStyle">normal</item>

Medium-italic:

<item name="android:fontFamily">sans-serif-medium</item>
<item name="android:textStyle">italic</item>

Black:

<item name="android:fontFamily">sans-serif-black</item>
<item name="android:textStyle">italic</item>

为了便于参考,以下是它们的样子:

Android相关问答推荐

derivedStateOf与使用key和MutableState记住

Android Bundle getSerializable(String?):'可序列化?&# 39、被抛弃了在Java中被弃用

在Kotlin Jetpack Compose中点击按钮后启动另一个Android应用程序

NativeScript在`ns run android`上重复Kotlin类

Yarn 机器人导致活动未找到,但Gradlew Run工作正常

如何更新Kotlin中的显示?

Jetpack Compose主导航中的全屏图标列表

Jetpack编写错误(java.lang.NoSuchMethodError:无接口方法startRestartGroup)

如何在Jetpack Compose中实现前后动画?

设置文本 colored颜色 动画时如何减少重新组合?

可组合:don';t剪辑视图

使用 JNI 从 Android 应用程序中使用 Kotlin/Native 预构建共享库

Color.Transparent 和 Color.Unspecified 之间的区别

如何在ExecutorService中设置progressBar的进度?不想使用 AsyncTask,因为它已被弃用

如何仅同步 local_manifest.xml?

ArrayList 上的 Android intent.getParcelableArrayListExtra 引发 Nullpointer 异常

Jetpack 将 Grid 与基于大小的自适应列数组合在一起

如何在 Dolphin 中启用 android studio new logcat | 2021.3.1 金丝雀 6?

在开发过程中我应该把 mp4 文件放在哪里?

多个项目 react-native android 构建错误