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

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(使用前将#替换为@)

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

  • 如何在 Android 中保存相机的临时照片?

    在尝试从相机拍照并将其保存到应用程序的缓存文件夹中时 我没有得到任何可见的结果 应用程序不会崩溃 但在 LogCat 上 当我尝试将 ImageView src 字段设置为刚刚获取的文件的 URI 时 我收到此消息 09 17 14 03
  • React Native 从 JavaScript 代码内部访问 strings.xml

    有没有办法访问当前值android app src main res values strings xml从 JavaScript 代码内部 我想为每个构建放置不同的端点 URL 但我什至无法检测到反应本机代码内的构建类型 而不必求助于 D
  • StrictMode 策略违规:我的应用程序中存在 android.os.strictmode.LeakedClosableViolation?

    Android 开发新手 第一次在我的应用程序上尝试 StrictMode 我注意到以下内容 并想知道这是否是我的应用程序或库中的问题 我不太清楚 谢谢你 D StrictMode StrictMode policy violation a
  • 找不到 com.google.firebase:firebase-core:9.0.0 [重复]

    这个问题在这里已经有答案了 在遵循有些不一致的指示之后here https firebase google com docs admob android quick start name your project and here http
  • Android 后退按钮无法与 Flutter 选项卡内的导航器配合使用

    我需要在每个选项卡内有一个导航器 因此当我推送新的小部件时 选项卡栏会保留在屏幕上 代码运行得很好 但是 android 后退按钮正在关闭应用程序而不是运行 Navigator pop import package flutter mate
  • 谷歌坐标认证

    当我尝试连接到 Google 坐标时 总是出现异常GoogleAuthException 我拥有 Google 地图协调中心许可证 我确实使用我的包应用程序名称和 SHA1 在 google 控制台中创建了我的客户端 ID 我将权限添加到清
  • 计数物体和更好的填充孔的方法

    我是 OpenCV 新手 正在尝试计算物体的数量在图像中 我在使用 MATLAB 图像处理工具箱之前已经完成了此操作 并在 OpenCV Android 中也采用了相同的方法 第一步是将图像转换为灰度 然后对其进行阈值计算 然后计算斑点的数
  • Android Activity 生命周期函数基础知识

    我正在测试这段代码 它显示活动所处的状态 public class Activity101Activity extends Activity String tag Lifecycle Called when the activity is
  • 如何使用 Cordova 获取当前安装的应用程序的版本?

    我已经找到了应用程序可用性插件 https github com ohh2ahh AppAvailability它主要检查用户是否在其设备上安装了某个应用程序 是否有可能获得应用程序的当前版本 开发者名称 重要 以及所有可能的信息 一般来说
  • 无法展开 RemoteViews - 错误通知

    最近 我收到越来越多的用户收到 RemoteServiceException 错误的报告 我每次给出的堆栈跟踪如下 android app RemoteServiceException Bad notification posted fro
  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • 我想实现下面的布局,按钮应该在屏幕底部,当惰性列被填充时,按钮不应该出去

    顶部有惰性列 惰性列下方有输入电话号码布局并从电话簿布局添加联系人 我希望当未添加联系人时此布局位于顶部 当我添加大量联系人时输入电话号码并添加电话簿布局中的联系人会随着惰性列滚动并移出屏幕 我不让他们走出屏幕 当接触较多时 它们必须粘在底
  • 如何发布Android .aar源以使Android Studio自动找到它们?

    我正在将库发布到内部 Sonatype Nexus 存储库 Android Studio 有一个功能 可以自动查找通过 gradle 引用的库的正确源 我将 aar 的源代码作为单独的 jar 发布到 Nexus 但 Android Stu
  • 在 android DatePickerDialog 中将语言设置为法语

    有什么办法可以让日期显示在DatePickerDialog用法语 我已经搜索过这个但没有找到结果 这是我的代码 Calendar c Calendar getInstance picker new DatePickerDialog Paym
  • 如何根据 gradle 风格设置变量

    我想传递一个变量test我为每种风格设置了不同的值作为 NDK 的定义 但出于某种原因 他总是忽略了最后味道的价值 这是 build gradle apply plugin com android library def test andr
  • 增加活动的屏幕亮度

    显然 Android 操作系统中至少有三种不同的技术可以改变屏幕亮度 其中两个在纸杯蛋糕之后不再起作用 而第三个被接受的技术显然有一个错误 我想在单视图活动开始时增加屏幕亮度 然后在活动结束时将亮度恢复为用户设置 没有按钮 没有第二个视图或
  • 在activity_main.xml中注释

    我是安卓新手 据我所知 XML 中的注释与 HTML 中的注释相同 使用 形式 我想在 Android 项目的 Activity main xml 配置文件中写一些注释 但它给了我错误 值得注意的是 我使用的是 Eclipse 但目前 我直
  • 将 Intent 包装在 LabeledIntent 中以用于显示目的

    要求 我的应用程序中有一个 共享 按钮 我需要通过 Facebook 分享 我需要选择是否安装原生 Facebook 应用程序 我们的决定是 如果未安装该应用程序 则将用户发送到 facebook com 进行分享 当前状态 我可以检测何时
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分
  • 如何将 google+ 登录集成到我的 Android 应用程序中?

    大家好 实际上我需要通过我的应用程序从 google 登录人们 现在我阅读了 google 上的文档 其中指出 要允许用户登录 请将 Google Sign In 集成到您的应用中 初始化 GoogleApiClient 对象时 请求 PL

随机推荐

  • 无法使用 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