Android 修改应用程序字体

  在网上搜索了相关资料,研究了两种算是比较快速的改变程序字体的方法,好,先来介绍着两种方法。

首先第一种方法是重写控件(以Textview为例):

 1、Android在写程序的时候谷歌早已将所有字体都默认好了具体是什么字体,自己也没去研究,所以假如说要让程序的字体变成自己想要的字体也是件不容易的事情,首先你要先下载字体库(后缀为ttf),英文的字体库还不算大,而一般来说中文的字体库就很大,所以可以更加程序里面出现的文字,对字体库进行裁剪。要下载字体库的可以上网下载,网上一堆的是,csdn里面的比较抠门,字体库居然还要积分,都不想吐槽了。

2、下载完字体库后,你工程目录assets文件夹中,新建一个文件夹“fonts”用于放字体库,然后再加字体库(.ttf)放到fonts文件夹下,当然你的字体库文件不能以中文命名。

3、重写Textview,创建一个类继承TextView,代码如下:

public class ChineseTextView extends TextView {

	public ChineseTextView(Context context, AttributeSet attrs) {
		super(context, attrs);
		/*
		 * 必须事先在assets底下创建一fonts文件夹 并放入要使用的字体文件(.ttf)
		 * 并提供相对路径给creatFromAsset()来创建Typeface对象
		 */
		Typeface fontFace = Typeface.createFromAsset(context.getAssets(),
				"fonts/Microsoft.ttf");
		// 字体文件必须是true type font的格式(ttf);
		// 当使用外部字体却又发现字体没有变化的时候(以 Droid Sans代替),通常是因为
		// 这个字体android没有支持,而非你的程序发生了错误
		setTypeface(fontFace);
		}
	}

  4、在xml布局文件直接用这个类代替Textview便可以:

            <com.example.androidsetting.ChineseTextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="TextView" />

再来说说第二种方法,这种方法不需要继承Textview,不过还是需要字体库。

 前两个步骤更上面的一样,这里复制一下。

 1、Android在写程序的时候谷歌早已将所有字体都默认好了具体是什么字体,自己也没去研究,所以假如说要让程序的字体变成自己想要的字体也是件不容易的事情,首先你要先下载字体库(后缀为ttf),英文的字体库还不算大,而一般来说中文的字体库就很大,所以可以更加程序里面出现的文字,对字体库进行裁剪。要下载字体库的可以上网下载,网上一堆的是,csdn里面的比较抠门,字体库居然还要积分,都不想吐槽了。

2、下载完字体库后,你工程目录assets文件夹中,新建一个文件夹“fonts”用于放字体库,然后再加字体库(.ttf)放到fonts文件夹下,当然你的字体库文件不能以中文命名。、

3、先创建一个方法,changeFont(ViewGroup root){},用来遍历当前页面的控件,目的就是为了给同一类控件进行样式设置,所以用这种方法也能比较快的进行字体设置

	protected void changeFont(ViewGroup root) {
		Typeface tf = Typeface.createFromAsset(this.getAssets(),
		"fonts/Microsoft.ttf");
        for(int i = 0; i <root.getChildCount(); i++) {
                 View v = root.getChildAt(i);
                 if(v instanceof Button) {
                     ((Button)v).setTypeface(tf);
                     ((Button)v).setTextSize(15);
                     ((Button)v).setTextColor(Color.GRAY);
                 } else if(v instanceof TextView ) {
                     ((TextView)v).setTypeface(tf);
                     ((TextView)v).setTextSize(15);
                     ((TextView)v).setTextColor(Color.GRAY);
                 } else if(v instanceof EditText) {
                         ((EditText)v).setTypeface(tf);
                         ((EditText)v).setTextSize(15);
                         ((EditText)v).setTextColor(Color.GRAY);
                 } else if(v instanceof ViewGroup) {
                         changeFont((ViewGroup)v);
                 }
         }
     }

4、在onCreate方法中,当然在setContentView(R.layout.activity_main);后面去实现

    ViewGroup root=(ViewGroup) this.getWindow().getDecorView();  //获取本Activity下的获取最外层控件
    changeFont(root);

  上面两种方法都介绍了,下面总结一下这两种方法的感受,我觉得都各有优缺点。

第一种方法,不需要在activity中增加代码,直接修改控件的就行了,但是呢,因为一页面有需要控件都是有文字的,如button,checkbox,一堆,所以要是全都改的话不是要全部重新这些控件。第二种方法的话在activity里面增加代码,那么就差不多都要在所有activity里面增加代码,然后没了。对了第一种方法,其实是在xml里面去实现,就是说你的控件每出现一次就要TextView一次,用ScrollView来说明问题,ScrollView里面有很多个Textview,都是通过第一种方法去修改字体,第一次加载界面,会加载一段时间(看你加载的多少)才将页面显示出来,然后ScrollView往下拖动,之前看不到的textview要加载一遍,然后这期间有会有稍微的卡顿,这就是第一种方法最致命的一个缺点。相比之下,第二种方法不会这样,因为它是先加载界面在修改。但是同样,这两种方法,第一次进入界面的时候都会先加载一段时间才能进去,体验不是很好。

时间: 2024-10-10 03:15:32

Android 修改应用程序字体的相关文章

Qt for Android修改应用程序的图标和名称

使用QT开发出的Android Apk安装后默认的图标是安卓的小机器人,下面介绍在QT5.12版本上修改APP名称和图标的方法. 1.  编译一次项目后,在编译目录下找到AndroidManifest.xml 2.  试试在项目目录下创建一个文件夹android_sources,把图标和 AndroidManifest.xml文件放进去 3.  右键项目,在弹出的菜单中选择“添加现有文件…” 4.  双击AndroidManifest.xml文件,在右侧进行修改,在"Application ic

(三十七)Android开发中修改程序字体

1.在Android XML文件中设置系统默认的字体 可以在XML文件中采用android:typeface设置字体,例如android:typeface=”monospace”.在这里例子中我们在Activity中对android:text=”Hello, World! 您好”分别进行了四种显示方式,依次为“Sans”,“serif”,“monospace”和系统缺省方式(经试验缺省采用采用sans).英文字体有差异,貌似中文字体没有差异.XML文件如下: <?xml version=“1.0

Android 修改程序字体

Android提供三种字体:"Sans","serif"和"monospace". 1.在Android XML文件中设置字体 可以采用android:typeface,例如android:typeface="monospace".在这里例子中我们在Activity中对android:text="Hello, World! 您好"分别进行了四种显示方式,依次为"Sans","s

android:修改PagerTabStrip中的背景颜色,标题字体的样式、颜色和图标以及指示条的颜色

1.修改PagerTabStrip中的背景颜色 我们在布局中直接设置background属性即可: <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="fill_parent" android:layout_height="fill_parent" > <android.support.v4.view.PagerTabS

Android Studio 主题及字体修改,只需五步

在我们刚学习Android Studio时,最初可能就是Android Studio主题及字体的修改.其实很简单,只需要简单的五步. 1.打开设置功能窗口.两种方式: a. [File]菜单-->打开[Settings]选项: b. 工具栏中选中[Settings]图标打开. 2.找到[Appearance &Behavior]-->Appearance选项,IDE默认[theme]为Intellij主题.如图: 3.如上图,点击[Theme]下拉选项,选中[Darcula]主题,点击

【Android】利用xml文件布局修改Helloworld程序

Android环境布置完毕,直接就是一个Helloworld程序,详情请看<[Android]利用adt-bundle在Linux下轻松搭建Android开发环境与Hello world>(点击打开链接),这使得很多人难以理清整个Android项目的基本结构.其实安卓项目,与其它Java工程的项目,SSH.Servlet等,都是采取Java与XML文件联合的方式,形成一个工程的. 有几个文件是需要熟知的.如下图: MainActivity.java是整个安卓工程的入口, 其中,里面的prote

Android Studio 3.1.2 修改字体(font)大小(size) 及老版本修改主题、字体、颜色 参照地址

Android Studio 3.1.2  修改字体(font)大小(size) 步骤:File-Settings-Editor-Color Scheme-Color Scheme Font-Size 图片:         老版本as修改主题.字体.颜色 参照地址: https://blog.csdn.net/bangyiqing/article/details/52241746 原文地址:https://www.cnblogs.com/1502720115chenzhen/p/9063176

android修改HOLO对话框风格

andriod中修改对话框的风格,可以通过设置theme来实现,部分元素需要通过Java代码来修改,下面以修改对话框的标题为例说明各步骤. 1.编写一个文本样式. DIALOG的标题是一个textview,在sytles.xml中,添加如下代码来设置你自己的文本样式: <style name="DialogWindowTitle"> <item name="android:textSize">22sp</item> <ite

调试 Android* x86 应用程序的方法以及要使用的工具

作者:Xiaodong Wang 1.简介 众所周知,Android* 开发人员头顶许多称呼:设计员.程序猿等,并且通常会不可避免地被称为故障检修工.代码中的错误无法避免,因此无论您是否一开始就造成错误,了解调试工具以及如何迅速而有效地跟踪并解决错误都很重要.鉴于此,如今的 Android 开发人员必须掌握有效的调试技巧.本文提供了 Android 应用程序调试工具的简单教学,用于帮助 Android SDK 以及相关工具的新手迅速入门,并在 Android x86 平台上更有效地解决故障. 2