Android文本样式缺少轻、中、细字重

34
当为TextView设置自定义字体时,我只能选择普通、粗体或斜体: enter image description here 在以下示例中,如何将样式设置为轻体而不是粗体?
<TextViewWithCustomFont
...
android:textStyle="bold"/>

可以使用它们的组合,例如android:textStyle="normal|bold|italic"android:textStyle="normal|bold", 共有超过十种组合可供选择。 - g00dy
3
@g00dy 只有四种组合,分别是 normal(普通),bold(加粗),italic(斜体)和 bold|italic(加粗斜体)。在代码中,它们分别对应 Typeface.NORMAL(普通字体)、Typeface.BOLD(加粗字体)、Typeface.ITALIC(斜体字体)和 Typeface.BOLD_ITALIC(加粗斜体字体)。由于它们都是整数,其中加粗为 1,斜体为 2,加粗斜体为 3,因此 Typeface.ITALIC|Typeface.BOLD == Typeface.BOLD_ITALIC - Ivo
@g00dy,android:textStyle="normal|bold" 只是让文本加粗吗? - Sam
3个回答

71

这是字体特定的。并不是所有字体都有轻(light)中等(medium)细(thin)的属性/样式,但默认字体应该有。您可以使用默认的轻字体,通过使用 fontFamily: sans-serif-light 或者对于细字体,使用fontFamily: sans-serif-thin

对于自定义字体,您需要包含该字体的轻版本并使用它。


1
半粗体呢? - Sam
@Sam:使用android:fontFamily="@font/robotomedium"(或"sans-serif-medium"),但请记住删除android:textStyle="bold"(这两个属性不是互斥的)。 - smukamuka

-1

字母间距

作为改变字体外观的相邻解决方案,您可以使用letterSpacing。这将更改TextView内字母之间的距离。

像0.2这样的正数将增加间隔,而像-0.1这样的负数会将字母挤在一起。

在Android 21+中,您可以以编程方式调用setLetterSpacing或在XML中添加letterSpacing


-3

4
我知道这是什么意思。我想知道如何为有其他样式的自定义字体设置其他样式。 - AlikElzin-kilaka
3
在Android中,除非将“其他样式”拆分为单独的字体文件并逐个加载,否则不支持为具有其他样式的自定义字体设置其他样式。 - CommonsWare
@CommonsWare - 如果字体文件是单独加载的,则“style”没有意义 - 只有字体。这意味着在自定义字体中,样式属性是无用的。 - AlikElzin-kilaka
@CommonsWare - 谢谢。我得出结论,没有自定义字体,只有特定的字体。这很奇怪。为什么内置族群却不支持自定义族群呢? - AlikElzin-kilaka

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