Android开发:如何替换strings.xml中字体图标为本地自定义图标?
嘿,这事儿其实和你之前用FontAwesome的路子差不多,我给你拆成几步,跟着来就行:
替换本地字体图标到Android项目的详细步骤
1. 准备好你的字体资源
- 先把你本地的字体文件(一般是
.ttf或.otf格式)复制到Android项目的src/main/assets目录里——要是没有assets文件夹,直接在main目录下新建一个就行。 - 接着得找到每个目标图标对应的Unicode编码:通常字体图标包会自带说明文档(比如
demo.html或者字符映射表),要是找不到,用系统自带的工具也能查:Windows搜「字符映射表」,Mac用「字符查看器」,打开你的字体文件就能看到每个图标的编码,格式是U+XXXX(比如U+E001)。
2. 更新strings.xml里的图标声明
把原来FontAwesome的编码换成新字体的编码就行,注意格式要转对:把U+换成&#x,最后加个分号。举个例子:
<resources> <!-- 替换成你的新图标对应的Unicode编码 --> <string name="icon_new_info"></string> <string name="icon_new_heart"></string> </resources>
3. 修改Java代码里的字体加载逻辑
因为换了新字体,所以要把加载字体的文件名改成你刚放进assets里的那个。比如你的新字体叫my-custom-icons.ttf,代码就改成这样:
Button txt=(Button) findViewById(R.id.infotxt); Button txt1=(Button) findViewById(R.id.hearttxt); // 这里替换成你的新字体文件名,注意大小写要和assets里的完全一致 Typeface customIconFont = Typeface.createFromAsset(getAssets(), "my-custom-icons.ttf"); txt.setText(" " + getString(R.string.icon_new_info) + " ..."); txt.setTypeface(customIconFont); txt1.setText(" " + getString(R.string.icon_new_heart) + " ..."); txt1.setTypeface(customIconFont);
4. 验证调试避坑
- 先clean一下项目再重新编译,避免缓存搞事情。
- 如果图标没显示出来,先查这几个点:
- 字体文件是不是真的放进assets目录了?文件名有没有写错(Android对文件名大小写敏感哦)。
- Unicode编码格式对不对?是不是
&#xXXXX;这种格式,有没有漏写分号? - 是不是所有要显示图标的控件都调用了
setTypeface?别漏了!
内容的提问来源于stack exchange,提问作者stacJohn
相关产品推荐
相关产品推荐

