Android 中怎么设置全局自定义字体样式

【Android】全局自定义字体的实现 一、修改TextView字体 假设现在有一个字体文件msyh.ttf;对于某个TextView来说,如果想修改它的字体,可以简单的使用如下代码: val tv = findView() val tf = Typeface.createFromAsset(assets, "msyh.ttf") tv.typeface = tf 这样就可以将单个TextView设置为对应字体。如果想要实现全局修改字体,则需要通过修改Factory2的方式来实现。 二、Factory2 Factory2用于根据xml标签创建 阅读详情

1.首先要先知道Android中TextView设置字体样式的方法。

textView.setTypeface();// 设置字体样式
如果要自定义字体样式,先在工程里新建一个assets目录,把自定义样式字体放在里面。
Typeface.createFromAsset(context.getAssets(),
        "fonts/Aileron-Light.otf");// 根据路径得到Typeface

问题是,怎么给Android应用设置全局自定义样式呢,如果每个textview都用setTypeface();方式设置的话,在listview中,会造成卡顿的现象。怎么解决呢?

首页在AndroidManifest.xml中 application中设置一个主题

<application
    android:name="com.qiyuan.congmingtou.app.CMTApplication"
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:persistent="true"
    android:label="@string/app_name"
    android:theme="@style/AppTheme">
在style.xml中

<style name="AppTheme" parent="AppBaseTheme">
    <item name="android:windowNoTitle">true</item>
    <item name="android:typeface">serif</item>
</style>
Android中默认的字体样式有3中,
serif,
monospace,
sans,
在style文件中,先随意指定一种。要记住你指定的字体样式。

3.写一个管理字体工具类FontsUtils

public class FontsUtils {
    private static Typeface cmtTypeFace;

    /**
     * 非中文内容使用此字体样式(设计需求)设置字体样式
     */
    public static void setCMTFonts(Context context, TextView textView) {
        textView.setTypeface(getCMTTypeface(context));// 设置字体样式
    }

    /**
     * 非中文内容使用此字体样式(设计需求) 获取Typeface
     */
    public static Typeface getCMTTypeface(Context context) {
        if (cmtTypeFace == null) {
            cmtTypeFace = Typeface.createFromAsset(context.getAssets(),
                    "fonts/Aileron-Light.otf");// 根据路径得到Typeface
        }
        return cmtTypeFace;
    }

    /**
     * 设置全局字体样式
     *
     * @param context 上下文
     */
    public static void setAppTypeface(Context context) {
        try {
            Field field = Typeface.class.getDeclaredField("SERIF");
            field.setAccessible(true);
            field.set(null, getCMTTypeface(context));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
用反射的机制,来设置字体的样式。这种方式有点暴力啊

Field field = Typeface.class.getDeclaredField("SERIF");
getDeclaredField("")参数名是你在style里自己设置的默认字体样式"serif",这个使用单例模式,来获取Typeface实例。
android 设置字体样式 / 在页面加载完成后动态加载字体文件(例如通过JavaScript)设置完思源字体之后,APP整体行高太高了,需要修改字体,方法如下,也可以直接从网上下。Android Q及Android X 开发环境报错,需要升级。3)通过WebViewClient自定义加载逻辑。在Application初始化时进行设置。2. WebView设置字体样式。1. 全局设置字体样式。2)使用在线字体服务。 阅读详情

相关推荐

Android全局使用自定义字体

项目需求使用微软雅黑作为全局字体,一个个改太麻烦了。找了很多中文材料,发现都是一篇,最后还是求助stackoverflow。 解决办法参考自http://stackoverflow.com/a/16883281,简单来说就是利用映射更改默认字体。 目标:使用微软雅黑字体作为全局字体。 1. 首先下载自定义字体,拷贝到工程中的assets文件夹下,建个新文件夹也可以,我的做法如下图:

安天宇Terence的专栏 5656

Android 分别使用Java和Kotlin给Textview设置第三方字体、APP全局字体、 Android X字体设置

重写attachBaseContext1.右键单击res文件夹,然后转到“新建”>“Android资源目录”。此时会出现“新建资源目录”窗口。2.在“资源类型”列表中,选择字体,然后单击“确定”。3.将字体文件添加到字体文件夹中。4.双击字体文件可以在编辑器中预览文件的字体。这四步就是创建一个font资源文件,把下载好的字体放到文件中。

fromVillageCoolBoy的博客 4251

Android应用程序通常具有默认的全局字体大小

然而,有时候我们需要根据特定的需求修改全局字体大小。本文将介绍如何在Android应用程序中改变全局字体大小,并提供相应的源代码示例。在Android开发中,全局字体大小可以通过修改应用程序的主题来实现。主题是一种定义应用程序样式和外观的集合,包括字体、颜色、背景等。因此,通过修改主题,我们可以改变全局字体大小。通过定义一个新的主题并设置相应的字体大小,我们可以轻松地自定义应用程序的字体大小。在该样式文件中,我们定义一个新的主题,并在其中设置字体大小。文件中将应用程序的主题设置为我们刚刚定义的主题。

TechChamp的博客 469

Android 给Textview设置第三方字体、APP全局字体、 Android X字体设置

Android、全局字体和局部字体、附字体包Android、全局字体和局部字体、附字体包前言一、assets是什么?二、使用步骤1.引入库2.在Application中设置字体3.在Activity中使用使用字体单个TextView设置指定字体前言本文主要介绍App全局设置字体以及单个TextView设置字体 提示:以下是本篇文章正文内容,下面案例可供参考 一、assets是什么? 首先需要了解Android之asset

资深全栈开发工程师 1万+

android设置全局字体样式

设置 android全局各种字体样式 方便、简洁

Android 使用Font和style定义App全局字体样式

Android 使用Font和style定义App全局字体样式,非常快速,之前有一份同样的代码,但是忘记删除一些东西了,导致文件特别大,重新上传了一份

android 改变全局字体样式(第三方字体包)

android 改变全局字体样式 参考:http://stackoverflow.com/questions/2711858/is-it-possible-to-set-font-for-entire-application/16883281#16883281

Chailyn的博客 3825

SAP FICO 消息号 FAA_POST042 技术清算科目中的余额:分类账 0L,货币 00、RMB、10000.00-

SAP FICO 消息号 FAA_POST042 技术清算科目中的余额:分类账 0L,货币 00、RMB、10000.00-

我好像病了的博客 2139

设置字体

Custom font in Styles fonts/RobotoCondenses-Regular.tt> Custom font defined in Theme @style/AppTheme.Widget.TextView> fonts/Roboto-ThinItalic.ttf> 上面的Styles配置,可以方便地把应用内所有TextView的字体配置为Robot

仓仓 623

指标异常检测和诊断

贡献度,即用定量衡量的方式来说明:一个指标YYY的异动△Y△Y△Y,具体是由其中哪些成分XiX_iXi​带来了多少异动△Yi△Y_i△Yi​?

qq_43349542的博客 3167

华硕天选3 win11+ubuntu20.04双硬盘双系统配置(包括ubuntu重启后无法成功进入、没有wifi图标的设置)

1、制作系统盘 2、分区 3、重启电脑按F2

baidu_38431960的博客 1万+

Android 修改特殊字体样式

废话不多说,先上图 1、在assets下新建一个fonts文件,把字体样式 .TTF文件 放入 2、代码部分 @BindView(R.id.tv_tv) TextView tvTv; @BindView(R.id.tv_tv1) TextView tvTv1; ...

qq_37686995的博客 1908

SpringCloud2025+SpringBoot3.5.0动态路由503问题排查与负载均衡依赖解析

本文详细排查了SpringCloud 2025与SpringBoot 3.5.0环境下,Spring Cloud Gateway动态路由返回503错误的根本原因。核心问题在于新版网关未默认集成负载均衡器,导致无法解析lb://服务名。通过对比静态路由与动态路由,定位到需显式引入spring-cloud-starter-loadbalancer依赖,并提供了完整的解决方案与最佳实践配置。

s3t4u的博客 504

android 全局修改系统字体样式

效果图对比.png 工具类 public class FontsUtils { /** * 设置自定义字体 * * @param context * @param staticTypefaceFieldName 需要替换的系统字体样式 * @param fontAssetName 替换后的字体样式 */ public ...

yangjunjin的博客 689

【免费】最新区块链钱包和私钥的助记词碰撞器,bybit使用python开发

【免费】最新助记词钱包碰撞器,全链全网络,一周左右就有,稳定高效。

weixin_48529185的博客 1万+

智能测试策略优化:平衡覆盖率、时间和资源

在软件开发过程中,测试是确保软件质量的关键环节。然而,测试工作往往面临着诸多挑战,其中如何在保证测试覆盖率的前提下,合理分配时间和资源是一个核心问题。本文章的目的在于探讨智能测试策略的优化方法,帮助软件测试团队在有限的时间和资源条件下,实现尽可能高的测试覆盖率。文章的范围涵盖了智能测试策略的核心概念、算法原理、数学模型、实际应用案例以及相关工具和资源等方面。本文将按照以下结构进行组织:首先介绍智能测试策略优化的背景和相关概念,包括核心术语和缩略词的定义;

AIGC应用创新大全的博客 620

android学习笔记——全局改变应用的字体

全局改变应用字体,三部曲:第一部曲:声明一个类继承Application,重写onCreate()方法,清单文件(AndroidManifest.xml)中记得声明,代码如下:@Override publicvoidonCreate() { /* *现在介绍setDefaultFont方法参数,第一个上下文对象就熟悉了,第二个参数涉及到控件就会有一个属性a...

weixin_33852020的博客 211

《Java开发及前端最全面试题-Offer直通车》目录

Java开发是需求最广,工资高的细分领域,同时也是会的人最多,有的公司招1个Java开发,要面试几十甚至上百面试者,同时要求很高,要求通晓技术栈很多及很深深度。如果你正准备面试,想要脱颖而出,那么《Java开发及前端最全面试题-Offer直通车》是你的不二选择。本书汇集了多篇超过1万字的精华内容,无论是Java基础、数据库、SpringBoot和SpringCloud等必问的,还是前端、k8s等容器和虚拟化和大数据各类技术面试,本书都为你提供了最全面的试题和参考答案。

大模型大数据攻城狮的专栏 1178

android 全局设置字体样式

1、把字体放入res资源文件夹font中 2、在style.xml中你所使用的主题中加入 <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> <item name="androi...

时光小偷 1521

论文阅读:arxiv 2023 EduChat: A Large-Scale Language Model-based Chatbot System for Intelligent Education

EduChat是一个基于大规模语言模型(LLM)的教育领域聊天机器人系统,旨在为教师、学生和家长提供个性化、公平且富有同理心的智能教育服务。该系统通过在教育语料库上进行预训练和特定任务微调,强化了开放式问答、作文评估、苏格拉底式教学和情感支持等教育功能。为解决领域知识不足和知识更新问题,EduChat采用了检索增强技术,并融入心理学和教育学理论。该项目已开源,提供代码、数据和模型参数,推动LLM在智能教育中的应用发展。

CSPhD-winston的博客 1039

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

安卓全局修改TextView字体样式

将要设置的字体放置在assets/fonts下 在继承Application类中的onCreate方法写以下代码: Typeface typeFaceYaHei = Typeface.createFromAsset(getAssets(), "fonts/youyuan.ttf"); try { Field field = T

qq_23520793的博客 1846

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Android面试题经典之如何全局替换App的字体

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”关注,和我一起每天进步一点点替换字体也是一个比较常见的需求,一般分几种情况。实现起来也不麻烦,这里简单记录下。

AntDream的程序世界 318

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

android 开发 app全局字体的设置

APP字体设置

April52522的博客 1735

android 使用第三方字体(全局)

使用的是反射机制,通过搜索MONOSPACE的字体类型,把其字体设置成我们想要的字体 在自定义的Application里面声明全局字体。在assets中建立fonts文件夹,里面存放自定义的字体。 在style.xml声明全局的字体类型 public final class App extends MApplication{ public static Type...

pengpeng952789的博客 1754

安卓添加全局字体tff

1.android studio选取Android列表,自动创建assets文件夹 转发:https://www.cnblogs.com/zxxiaoxia/p/7364366.html 2.创建MyApplication package com.tayh.qrdemo; import android.app.Application; import android.graphics.Type...

neabea2016的博客 2220
上一篇: android性能优化
下一篇: git问题记录--如何从从detached HEAD状态解救出来
僤尐僤
博客等级 码龄14年 10粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值