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

Ash*_*ath 5 fonts android

下面的附件是我设备上字体的屏幕截图。 我的设备上的字体

这是要求:

  • 如果用户选择默认字体,则该应用应使用Roboto
  • 如果选择了其他字体,请在应用程序上使用选定的字体。

例子:

  1. 如果选择的字体= Rosemary,则为app。字体=迷迭香
  2. 如果选择的字体=默认,则为app。字体= Roboto

(系统上的默认字体可以是Roboto,也可以不是。)

如何以编程方式获取系统上选定的字体,并且还知道它是否为默认字体?

我知道如果我使用Typeface.DEFAULT,它将为我提供所选的字体。但是我也想知道它是否是默认字体(如所附的屏幕截图所示)。

Sah*_*nda 3

您可能想研究一下这个Typeface。此类提供了工具,以便您可以知道针对哪种类型选择了哪种字体/字体。

例如看看defaultFromStyle

Typeface.defaultFromStyle(int style)
Run Code Online (Sandbox Code Playgroud)

其中 Style 的值为 Integer,值的变化范围为

int: Value is NORMAL, BOLD, ITALIC, or BOLD_ITALIC
Run Code Online (Sandbox Code Playgroud)

编辑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);
}
Run Code Online (Sandbox Code Playgroud)