Android中的自定义字体

我已经阅读了一些文章并在Google上进行了搜索,但是我没有这样做。

我的问题是关于字体。

在Android中,“ "android:typeface"Normal”,“ Sans”,“ Serif”,“ Monospace” 中只有4个属性。

那么,在应用程序中使用“ Verdana”该怎么办?

请建议我在Android应用程序中使用此字体的正确方法。


智慧大石
浏览 521回答 3
3回答

一只斗牛犬

好!!这个问题已经很老了,但是如果有人(2015年)正在寻找有关如何通过xml代码将自定义字体应用于所有Textview的答案,请直接参见以下内容:首先:我们需要在您的应用目录中的assets文件夹内添加自定义字体:.ttf或.otf都适用于Android第二:创建Class CustomTextView,它扩展了TextView,如下所示:public class CustomTextView extends TextView {public CustomTextView(Context context) {&nbsp; &nbsp; super(context);&nbsp; &nbsp;}public CustomTextView(Context context, AttributeSet attrs, int defStyleAttr)&nbsp; &nbsp;{&nbsp; &nbsp; super(context, attrs, defStyleAttr);&nbsp; &nbsp;}public CustomTextView(Context context, AttributeSet attrs) {&nbsp; &nbsp; super(context, attrs);&nbsp; &nbsp;}@Overridepublic void setTypeface(Typeface tf) {&nbsp; &nbsp; super.setTypeface(FontCache.getFont(getContext(),"fonts/<font_name>"));&nbsp; &nbsp;}&nbsp;}第三:在CustomTextView的setTypeface()方法中使用FontCache类,目的是使用HashMap进行基本的字体缓存:public class FontCache {private static Map<String,Typeface> fontMap = new HashMap<String,Typeface>();public static Typeface getFont(Context context,String fontname){&nbsp; &nbsp; if(fontMap.containsKey(fontname)){&nbsp; &nbsp; &nbsp; &nbsp; return fontMap.get(fontname);&nbsp; &nbsp; &nbsp; &nbsp;}&nbsp; &nbsp; else{&nbsp; &nbsp; &nbsp; &nbsp; Typeface tf = Typeface.createFromAsset(context.getAssets(),fontname);&nbsp; &nbsp; &nbsp; &nbsp; fontMap.put(fontname,tf);&nbsp; &nbsp; &nbsp; &nbsp; return tf;&nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }}第四: [最后一步]现在要做的就是在需要自定义字体textview的地方直接在XML文件中使用CustomTextView:<<package_name>.CustomTextView&nbsp; &nbsp; android:layout_width="wrap_content"&nbsp; &nbsp; android:layout_height="wrap_content"&nbsp; &nbsp; android:text="Custom Font Text"&nbsp; &nbsp; android:textSize ="18sp"&nbsp; &nbsp; android:textAppearance="?android:textAppearanceSmall"&nbsp; &nbsp; android:id="@+id/custom_txt"&nbsp; &nbsp;/>抱歉,如果此消息已发布在SO的某个位置。只是想分享一下是否有帮助!!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android