在Android上,如何获取设备上选择的字体类型并知道它是否是默认字体?

5
下面附上我设备上的字体截图。 fonts on my device 以下是要求:
  • 如果用户选择默认字体,则应用程序应使用Roboto字体
  • 如果选择了其他字体,请在应用程序中使用所选字体。
示例:
  1. 如果选择的字体为Rosemary,则应用程序字体为Rosemary
  2. 如果选择的字体为默认值,则应用程序字体为Roboto
(系统上的默认字体可能是Roboto,也可能不是)
如何以编程方式获取系统上选择的字体,并知道它是否为默认字体?
我知道如果使用Typeface.DEFAULT,它会给我选择的字体。但我也想知道它是否为默认字体(如附图所示)。

我已经更新了我的答案。请检查是否符合您的需求。 - Sahil Manchanda
1个回答

3
你可能会想要了解 Typeface。该类提供工具,以便您知道所选的字体/字形与哪种类型相对应。
例如,查看defaultFromStyle函数。
Typeface.defaultFromStyle(int style)

其中Style的值是整数,且取值范围

int: Value is NORMAL, BOLD, ITALIC, or BOLD_ITALIC

编辑1

经过一番研究,我发现Typeface并没有提供字体名称。然后我找到了这个 SO,它提供了非常有用的信息,并引导我们去看另一个 SO,里面有一个自定义的FontListProvider,并说明第一个字体将是默认字体。如果您使用该自定义类,则很容易找到默认字体。

final List<FontListParser.SystemFont> fonts = FontListParser.safelyGetSystemFonts();
String[] items = new String[fonts.size()];
for (int i = 0; i < fonts.size(); i++) {
    Log.e("Font",fonts.get(i).name);
}

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