Android 字体设置注意的地方

时间:2023-02-01 19:24:54

Android内建的字体有: normal ,  sans , serif ,   monospace


一般在(1)  TextView 显示文本 或在 (2) WebView 加载内容的时候 需要设置字体


TextView 设置字体有两种方式


1)  可以通过 Typeface使用TTF字体文件设置字体


可以在程序中放入ttf字体文件,在程序中使用Typeface设置字体。


第一步,在assets目录下新建fonts目录,把ttf字体文件放到这。


第二步,程序中调用:


AssetManager mgr=getAssets();//得到AssetManager


Typeface tf=Typeface.createFromAsset(mgr, "fonts/ttf.ttf");//根据路径得到Typeface


tv.setTypeface(tf);//设置字体


这样通过加入ttf字体资源的方式设置字体可以达到效果,但是会使APK 容量增加,有些TTF文件有几十M


4.1, 4.2 以后 可以在 XML 指定  android:fontFamily 属性,

2)  txtView.setText( Html.fromHtml(..));

    调用Html.fromHtml方法,在html标签里面可以使用 字体属性font-family,不过也需要手机支持该字体,


fromHtml 方法 有个问题:对 外部style 标签 解析不了

private String prefixTitle = "<style>strong {line-height:22px;font-size:22px;color:#0909F7;font-family:Microsoft Yahei;}</style><strong>";

private String aftfix = "</strong>";

String title = "光伏电价补贴明年或大幅下调 光伏技术路线将何去何从";

tvHtml.setText(Html.fromHtml(prefixTitle + title+ aftfix));

Android 字体设置注意的地方


以上的prefixTitle 应该这样写 内部style 属性的形式,Html.fromHtml是可以解析的。

private String prefixTitle = "<strong style=\"line-height:22px;font-size:22px;color:#0909F7;font-family:Microsoft Yahei;\">";

Android 字体设置注意的地方


但是这样设置发现style里面的字体颜色并没有生效,估计TextView 对strong 和 style 不支持,改用 <font> 标签,以属性=value形式来设置


private String prefixTitle = "<font color=\"#FF0000\" line-height=\"22px\" font-size=\"22px\" font-family=\"Microsoft Yahei\">";

private String aftfix = "</font>";

String title = "光伏电价补贴明年或大幅下调 光伏技术路线将何去何从";

tvHtml.setText(Html.fromHtml(prefixTitle + title+ aftfix));

Android 字体设置注意的地方


以上对font标签指定了 font-family 属性 微软雅黑 字体,如果系统支持则会显示此字体,不支持则是默认字体

注意 如果设置TextView  内容是一段文本,用html格式包装的话 , 可以使用 <strong> <span>标签 , 不要使用<div>  <p>  标签,因为<div> <p> 标签都带有自动换行

Html.fromHtm(string ) 方法 支持部分标签,有些标签属性的支持也是部分的,所以我们在html标签代码里加了一些标签和标签属性发现无效,那么可能就是fromHtml方法没有

实现,如果我们还要实现一些标签,那需要调用 Html.fromHtml(source, imageGetter, tagHandler) 方法,实现TagHandler接口。


Html.fromHtml() 对font标签只实现了两个属性:color和face。没有实现size属性。所以不能精确设置文字大小。只能通过big,small这样的相对大小设置。

或者调用TextView 的 setTextSize 方法。


WebView 加载内容设置字体

webview 控件加载 html标签代码的内容时,如果还想修改字体颜色,大小,行间距,我们可以 在html标签代码钱追加 <style>...</style>

private String extrStyle = "<style>p {background-color:transparent;line-height:36px;font-size:18px;font-family:Microsoft Yahei;}</style>";

//html标签代码
private String content = "<p>&nbsp; &nbsp;&nbsp;&ldquo;分布式光伏发电特别是个人光伏发电改变了能源生产的方式和运行体系,并网难的问题现在基本上解决,备案制已经在各地落实,补贴也在逐步发放,我国光伏发电的政策体系已经建立起来,现在市一级*出台光伏发电扶持政策的越来越多</p>";

wvContent.loadDataWithBaseURL(null, extrStyle+content, "text/html","utf-8", null);

Android 字体设置注意的地方


以上设置了行间距,字体大小,字体。