【问题标题】:Android text style missing light, medium, thin,Android文字样式缺少light、medium、thin、
【发布时间】:2013-08-16 12:13:06
【问题描述】:

在为 textview 设置自定义字体时,我只能选择普通、粗体或斜体:

在下面的示例中,如何将样式设置为 light 而不是粗体?

<TextViewWithCustomFont
...
android:textStyle="bold"/>

【问题讨论】:

  • 使用它们的组合,例如android:textStyle="normal|bold|italic"android:textStyle="normal|bold",你有10多个组合。
  • @g00dy 只有 4 种组合。 normalbolditalicbold|italic。在代码中,这是Typeface.BOLDTypeface.ITALICTypeface.BOLD_ITALICTypeface.NORMAL。因为这些是整数,粗体为 1,斜体为 2,粗体为 3,然后 Typeface.ITALIC|Typeface.BOLD == Typeface.BOLD_ITALIC
  • @g00dy, android:textStyle="normal|bold" 加粗???

标签: android textview typeface text-styling


【解决方案1】:

这是特定于字体的。并非所有字体都有 lightmediumthin 属性/样式,但默认字体应该。您可以通过fontFamily: sans-serif-light 使用默认的浅色字体,或者对于细字体,fontFamily: sans-serif-thin

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

【讨论】:

  • 半粗体怎么样?
  • @Sam: 使用 android:fontFamily="@font/robotomedium" (或 "sans-serif-medium") 但记得去掉 android:textStyle="bold" (这两个属性不是独占的)
【解决方案2】:

字母间距

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

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

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

【讨论】:

    【解决方案3】:

    你只能结合这三个属性:

    • 正常
    • 粗体
    • 斜体

    http://developer.android.com/reference/android/widget/TextView.html#attr_android:textStyle

    可以这样:

    • 正常
    • 粗体
    • 斜体
    • 粗体 |斜体

    【讨论】:

    • 我知道它会是什么。我在问如何为具有其他样式的自定义字体设置其他样式。
    • @kilaka:“我在问如何为具有其他样式的自定义字体设置其他样式”——Android 不支持这样的概念,除非那些“其他样式”被拆分为单独的字体文件,单独加载。
    • @CommonsWare - 如果字体文件是单独加载的,style 没有任何意义 - 只是字体。这意味着 style 属性在自定义字体中是无用的。
    • @CommonsWare - 谢谢。我的结论是没有自定义字体 family - 只是一种特定的字体。这很奇怪。为什么有内置族但不支持自定义族?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-30
    • 1970-01-01
    • 1970-01-01
    • 2021-02-09
    • 2016-03-08
    • 1970-01-01
    相关资源
    最近更新 更多