当前位置: 首页 > 知识库问答 >
问题:

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

武博艺
2023-03-14

以下是要求:

  • 如果用户选择默认字体,应用程序应该使用Roboto

示例:

  1. 如果选择字体=迷迭香,应用程序。字体=迷迭香
  2. 如果选择字体=默认,应用程序。字体=机器人

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

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

我知道如果我使用字体。默认情况下,它会给我选择的字体。但我也想知道它是否是默认字体(如所附屏幕截图所示)。

共有1个答案

夏侯鹏
2023-03-14

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

例如,查看defaultFromStyle

Typeface.defaultFromStyle(int style)

其中,Style的值是一个整数,其值从

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

编辑1

在做了一点研究后,我发现字体不能提供字体名称。然后我发现了这个,这提供了非常有用的信息,它引出了另一个,它有一个自定义的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);
}
 类似资料:
  • 我有一个Java应用程序,我使用了Hibernate、Primefaces、JSF、Jquery、Twitterbootstrap和Spring。 我的应用程序中有许多数据表。 我希望DataTable有一个默认的选定项。 primefaces提供了什么方法吗?以下是它现在的样子: 以下是DataTable:

  • 我在此答案中找到了默认字体的列表,但我无法找到用于显示表情符号的字体(如果有的话)。

  • 问题内容: PDFbox内容流是按页面完成的,但是字段来自于来自目录的表单,该目录来自pdf doc本身。因此,我不确定哪些字段位于哪些页面上,以及导致将文本写到错误的位置/页面上的原因。 即。我正在处理每页的字段,但不确定哪些字段在哪些页面上。 有没有办法告诉哪个字段在哪个页面上?或者,是否有办法只获取当前页面上的字段? 谢谢! 标记 代码段: 问题答案: PDFbox内容流是按页面完成的,但是

  • 问题内容: 1.考虑我的代码在我拥有的JPanel的某行上,我是否自动在EDT上运行? 2.对于不属于GUI,JPanels或其他视图类的其他所有类的相同问题,简单逻辑类。 3.如果我有正在播放音乐的JPanel,则音乐应该在事件分发线程或非EDT的其他线程上运行(因为没有阻塞GUI,尽管我感觉运行没有问题) (来自EDT)? 注意:我想要一个一般规则,而无需使用“ 谢谢” 问题答案: 没有。 没

  • 问题内容: 如果我写这样的话 哪种类型带有“ 18”?是 int 还是 byte ?还是还没有类型? 它不能是int,因为这样是正确的: 这是不正确的: 编辑:我想我在工作分配转换的规范中找到了正确的部分: 常量的编译时缩小意味着代码如下: 字节theAnswer = 42; 被允许。如果不进行缩小,则整数文字42具有int类型的事实意味着将需要强制转换为字节: 字节theAnswer =(字节)

  • 问题内容: 我使用的是Font-Awesome,但未加载字体文件时,图标显示为。 因此,我希望这些图标在未加载文件时具有。 我怎么知道这些文件已经加载,我终于可以显示图标了? 编辑: 我不是在说页面何时加载(onload),因为字体可以在整个页面之前加载。 问题答案: 现在在GitHub上: 本质上,该方法通过比较两种不同字体的字符串宽度来工作。我们使用Comic Sans作为测试字体,因为它是