如何获取应用于文本视图的字体名称

2023-12-14

Textview label = (TextView) findViewById(R.id.item_title);
label.setText("Solve My Issue !");
Log.d("TAG","Font-Family : "+ String.valueOf(label.getTypeface()));

当我看到日志时它返回Font-Family : android.graphics.Typeface@7f37f870

如何知道字体系列的名称?是否可以 ?


getTypeface()方法返回的字体label,而此 Tyepface 实例的值为Map<String, Typeface> sSystemFontMap,这是一个静态字段Typeface。所以现在你得到了值,通过反射你可以得到地图sSystemFontMap,然后想找关键,就是字体的名字。

protected Map<String, Typeface> getSSystemFontMap() {
    Map<String, Typeface> sSystemFontMap = null;
    try {
        //Typeface typeface = Typeface.class.newInstance();
        Typeface typeface = Typeface.create(Typeface.DEFAULT, Typeface.NORMAL);
        Field f = Typeface.class.getDeclaredField("sSystemFontMap");
        f.setAccessible(true);
        sSystemFontMap = (Map<String, Typeface>) f.get(typeface);
        for (Map.Entry<String, Typeface> entry : sSystemFontMap.entrySet()) {
            Log.d("FontMap", entry.getKey() + " ---> " + entry.getValue() + "\n");
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return sSystemFontMap;
}

private static List<String> getKeyWithValue(Map map, Typeface value) {
    Set set = map.entrySet();
    List<String> arr = new ArrayList<>();
    for (Object obj : set) {
        Map.Entry entry = (Map.Entry) obj;
        if (entry.getValue().equals(value)) {
            String str = (String) entry.getKey();
            arr.add(str);
        }
    }
    return arr;
}

我测试了一下,列表arr包含以下字符串

sans-serif
tahoma
arial
helvetica
verdana

这并不奇怪,因为Android系统使用与上述五个名称相同的字体。 (不同系统版本可能存在差异,更多信息请参见/system/etc/fonts.xml)

<family name="sans-serif">
    <font weight="100" style="normal">Roboto-Thin.ttf</font>
    <font weight="100" style="italic">Roboto-ThinItalic.ttf</font>
    <font weight="300" style="normal">Roboto-Light.ttf</font>
    <font weight="300" style="italic">Roboto-LightItalic.ttf</font>
    <font weight="400" style="normal">Roboto-Regular.ttf</font>
    <font weight="400" style="italic">Roboto-Italic.ttf</font>
    <font weight="500" style="normal">Roboto-Medium.ttf</font>
    <font weight="500" style="italic">Roboto-MediumItalic.ttf</font>
    <font weight="900" style="normal">Roboto-Black.ttf</font>
    <font weight="900" style="italic">Roboto-BlackItalic.ttf</font>
    <font weight="700" style="normal">Roboto-Bold.ttf</font>
    <font weight="700" style="italic">Roboto-BoldItalic.ttf</font>
</family>
<!-- Note that aliases must come after the fonts they reference. -->
<alias name="sans-serif-thin" to="sans-serif" weight="100" />
<alias name="sans-serif-light" to="sans-serif" weight="300" />
<alias name="sans-serif-medium" to="sans-serif" weight="500" />
<alias name="sans-serif-black" to="sans-serif" weight="900" />
<alias name="arial" to="sans-serif" />
<alias name="helvetica" to="sans-serif" />
<alias name="tahoma" to="sans-serif" />
<alias name="verdana" to="sans-serif" />

由此可见。sans-serif,tahoma,arial,helvetica,verdana是同一件事。字体系列的不同名称sans-serif

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何获取应用于文本视图的字体名称 的相关文章

  • Firebase 管理 SDK Android

    在 Android 中初始化 Firebase Admin SDK 的代码 Override protected void onCreate Bundle savedInstanceState super onCreate savedIns
  • Android 应用程序在后台运行时保存数据

    目前我正在开发 xmmp 客户端 当应用程序位于前台时 该客户端工作得很好 但由于事实上 当应用程序处于后台时 我在 Application 类中保存了大量数据 复杂的 ArrayList 字符串和布尔值作为公共静态 每个字段都被垃圾收集
  • 导航组件重复 NavArgs 的问题

    我有一个片段 class SomeFragment private val args by navArgs
  • Firebase Analytics 禁用受众国家/地区跟踪

    我正在开发一个严格不允许位置跟踪的应用程序 我想使用 Firebase Analytic 的其他功能 例如 PageTransitions 和 Crashalitics 但如果我无法禁用受众位置跟踪 我就无法使用其中任何功能 这是我在 An
  • Phonegap - 如何将.txt文件保存在Android手机的根目录中

    我正在尝试使用phonegap 将 txt 文件保存在Android 手机的根目录中 我已经安装了这些插件 cordova plugin file 和 cordova plugin file transfer 在 config xml 文件
  • 菜单未显示在应用程序中

    由于某种原因 我的操作菜单在我的 Android Studio 应用程序中消失了 我正在按照教程学习如何创建 Android 应用程序 但最终遇到了这个问题 我正在使用 atm 的教程 http www raywenderlich com
  • 如果我们使用后退按钮退出,为什么 Android 应用程序会重新启动?

    按住主页按钮并返回应用程序时 应用程序不会重新启动 为什么使用后退按钮会重新启动 如果我们使用后退按钮退出 有什么方法可以解决在不重新启动的情况下获取应用程序的问题吗 请帮忙 当您按下Home按钮 应用程序将暂停并保存当前状态 最后应用程序
  • 线程自动利用多个CPU核心?

    假设我的应用程序运行 2 个线程 例如渲染线程和游戏更新线程 如果它在具有多核 CPU 当今典型 的移动设备上运行 我是否可以期望线程在可能的情况下自动分配给不同的核心 我知道底层操作系统内核 Android linux内核 决定调度 我的
  • 在意图过滤器中使用多个操作时的默认值

    尝试理解 Android 中的意图和操作并查看文档 http developer android com guide topics intents intents filters html 但我一直看到的一件事是定义了多个操作的意图过滤器
  • 已经使用 AsyncTask doInBackground 但新数据未显示

    我使用 AsyncTask 创建一个聊天室来接收消息 因此它总是检查即将到来的消息并将其显示给客户端 但代码似乎无法按我希望的方式工作 在客户端只显示所有旧数据 新数据不显示 因为当我尝试从服务器发送消息时 新数据没有显示在客户端中 我对这
  • 获取 AlarmManager 中活动的 PendingIntents 列表

    我有办法获取活动列表PendingIntent在设备中 我开始工作AlarmManager我想看看我的PendingIntents 已正确创建和删除 也很高兴看到其他什么PendingIntent在那里 只是为了看看某些应用程序是否正在做一
  • 如何在 sqlite 中将 2 列合并为新列

    我有一个包含 3 列的表 我必须将 2 列中的值按降序排列到一列中 A B C z 1 2 f 5 7 s 9 5 使用此示例 输出会将 B 列和 C 列中的值放入其中 如下所示 A B s 9 f 7 f 5 s 5 z 2 z 1 我当
  • Firebase:如何在Android应用程序中设置默认通知渠道?

    如何设置default通知渠道通知消息当应用程序在后台运行时会出现什么情况 默认情况下 这些消息使用 杂项 通道 如你看到的在官方文档中 https firebase google com docs cloud messaging andr
  • 请求位置更新参数

    这就是 requestLocationUpdates 的样子 我使用它的方式 requestLocationUpdates String provider long minTime float minDistance LocationLis
  • MediaCodec 创建输入表面

    我想使用 MediaCodec 将 Surface 编码为 H 264 使用 API 18 有一种方法可以通过调用 createInputSurface 然后在该表面上绘图来对表面中的内容进行编码 我在 createInputSurface
  • Android Studio:无法启动守护进程

    当我尝试在 Android Studio 中导入 gradle 项目时 遇到以下错误 Unable to start the daemon process This problem might be caused by incorrect
  • 下载后从谷歌照片库检索图像

    我正在发起从图库中获取照片的意图 当我在图库中使用 Nexus 谷歌照片应用程序时 一切正常 但如果图像不在手机上 在 Google Photos 在线服务上 它会为我下载 选择图像后 我将图像发送到另一个活动进行裁剪 但在下载的情况下 发
  • 将 JSON 参数从 java 发布到 sinatra 服务

    我有一个 Android 应用程序发布到我的 sinatra 服务 早些时候 我无法读取 sinatra 服务上的参数 但是 在我将内容类型设置为 x www form urlencoded 之后 我能够看到参数 但不完全是我想要的 我在
  • Android中webview的截图方法

    我在 webview 中的 html5 canvas 上画了一些线 并尝试使用下面的代码截取 webview 的屏幕截图 WebView webView WebView findViewById R id webview webView s
  • Android 如何聚焦当前位置

    您好 我有一个 Android 应用程序 可以在谷歌地图上找到您的位置 但是当我启动该应用程序时 它从非洲开始 而不是在我当前的城市 国家 位置等 我已经在developer android com上检查了信息与位置问题有关 但问题仍然存在

随机推荐

  • 无法使用 JDBC 连接到 sql 2008 express

    我能够使用主机 nash pc sqlexpress 的 SQL Server Management Studio 连接到本地计算机上的 MSSQL 2008 Express 但是当我连接 Microsoft JDBC 驱动程序时 它给出如
  • iframe 内的 getElementById

    问 我有一个 iframe 调用页面 X 页面 X 上有一个 div id test 这个测试div的值为 bubbles 在父页面上 我需要读取 div 的值并将其存储为 javascript var 结果 在父页面上有一个documen
  • 添加路径和从 Python 调用外部程序时出现问题

    我在 home myname mydir 中有一个名为 foo 的可执行文件 并尝试从Python调用它 但我在这里做了一些基本且错误的事情 你能帮助我吗 import os sys sys path append home myname
  • 使用 python-chess 库打印单个动作

    我想按顺序打印我从文本文件中读取的游戏 使用 python chess 库 的移动 每次移动一个字符串 所以 假设我有一个 pgn 文件 其中包含一个具有以下动作的游戏 1 f3 e5 2 g4 Qh4 我想迭代这些动作并一一打印它们 使用
  • 访问全局变量导致目标 C 中的链接器错误

    我已经声明了一个全局变量 如下所示 extern NSString name interface viewcontrollerOne 在实现文件中 我正在通过某种方法访问该全局变量 例如 void someMethod name hello
  • NodeJS/Knex 创建 Json 响应

    我目前正在使用 NodeJS 和 knex Postgresql 来处理数据库内容 Problem 想象一下数据库中有以下两个表 Table 1 PROJECT id pk name Table 2 EMPLOYEE id pk name
  • Keycloak-gatekeeper:“aud”声明和“client_id”不匹配

    正确的设置方法是什么aud声称可以避免以下错误 unable to verify the id token error oidc JWT claims invalid invalid claims aud claim and client
  • iOS UIView 动画 CATransform3DMakeRotation 混淆

    我有一个UIView我正在尝试制作向下翻转的动画 同时其轴位于视图的底部 例如 为此 我尝试使用 UIView 动画 UIView animateWithDuration 3 delay 0 options UIViewAnimationC
  • Google 表格 - REPT 字符限制 32000 的解决方法

    我试图重复一系列值 文本 A2 A19 by G2 G19次数 但是 其中一个重复项具有较高的 n 值 因此该特定文本值不会显示重复项 因为REPT结果不能超过 32000 个字符的限制 ARRAYFORMULA TRIM TRANSPOS
  • 单击列本身中的 HtmlCommandButton 即可删除 HtmlColumn

    我已经生成了HtmlCommandButton在支持豆中 通过单击该按钮 我想删除一个HtmlColumn from a HtmlDataTable这也是在烘焙豆中产生的
  • 如何使用 google api 为 Intel x86 Atom 映像创建 avd?

    我正在使用 android API 15 来开发应用程序 我使用的android镜像是Intel的x86atom 我可以使用标准 API 15 为 android 模拟器创建 AVD 图像 但不能使用 Google API 因为 avd 管
  • 空手道跳过从场景大纲中的 CSV 读取的测试用例

    我正在用空手道编写数据驱动测试 我的功能有一个场景大纲 我使用 CSV 文件来加载示例 例如测试用例 是否可以跳过 CSV 文件中的某些行 我不想每次都调用所有测试 假设您有三行 而您只想运行一行 您可以读取 csv 然后使用 JsonPa
  • 如何根据 MVC 中的下拉选择填充文本框?

    您好 我创建了一个表并通过 ADO NET 实体将其连接到 MVC 项目 连接后 我添加了实体的控制器 它在 MVC 项目的 VIEW 文件夹中创建了一组 cshtml 文件 但现在我需要的是创建一个下拉列表和文本框 我在 cshtml 文
  • 用按钮隐藏/取消隐藏div?

    h1 Welcome Chat now h1
  • JavaEE6:数据库关闭时如何保护Web应用程序

    首先 我的框架是带有 JSF 托管 bean EJB 和 JPA 的 Java EE 6 我编写了一个简单的程序来从数据库中查询信息 因此 当我单击按钮时 它会触发托管 bean 的事件 其中事件侦听器方法将访问 EJB 方法 EJB 方法
  • 将静态网格线添加到 JFreeChart 时间序列图表

    我正在尝试实施时间序列图JFreeChart 中有一个特殊的要求 我可以绘制图表 但我不知道如何在图表中的最后一个值处实现垂直红线 它应该始终位于同一位置 并且始终与最后一个值相交 我完全不知道如何做到这一点 我想也许可以将其实现为静态网格
  • 使用 ScrollWindowEx 在 Cwnd 中滚动后控件消失

    我已经在 Cwnd 中实现了 CScrollBar 但是滚动后窗口上的控件消失了 我听说我可以以某种方式使用 DeferWindowPos 但我不知道该怎么做 有任何想法吗 CPanel CPanel CreateEx WS EX CONT
  • ng-model 和 ng-value 之间有什么区别/不兼容?

    据我了解 ng model 设置分配模型的特定元素的值 ng value 与 ng model 有何不同 它与 ng model 结合使用 对于单选和选择 它是选择该项目时设置到 ng model 的值 使用它作为元素的 value 属性的
  • Sed 追加行

    sed 是否有一个命令可以在匹配的行后面追加一行 我尝试四处搜索 但对结果有点困惑 基本上我希望它匹配 address doubleclick net 127 0 0 1 并在其下面添加一行 例如 address doubleclick n
  • 如何获取应用于文本视图的字体名称

    Textview label TextView findViewById R id item title label setText Solve My Issue Log d TAG Font Family String valueOf l