首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在xml文件android中定义资源文件夹中的字体

在xml文件android中定义资源文件夹中的字体
EN

Stack Overflow用户
提问于 2014-11-01 21:52:29
回答 3查看 13K关注 0票数 4

我在我的资源文件夹中创建了一个名为fonts的文件夹,并在其中放置了一个.ttf文件。并将该fontfamily赋值给我的文本,如下所示

代码语言:javascript
复制
txtName.setTypeface(Typeface.createFromAsset(context.getAssets(),"fonts/segoeui.ttf"));

但是我想在xml文件中指定这个字体。可能是这样的。

代码语言:javascript
复制
<TextView
        android:id="@+id/txtName"
        style="@style/My_Name"
        android:fontFamily="@android:asset/fonts/segoeui"
         />
EN

回答 3

Stack Overflow用户

发布于 2014-11-01 22:05:22

只需使用以下代码即可。只需使用文件名添加segoeui.ttf即可。

代码语言:javascript
复制
android:fontFamily="fonts/segoeui.ttf"
票数 0
EN

Stack Overflow用户

发布于 2018-02-13 14:23:17

你可以按照这个来做。在你的Application类中:

代码语言:javascript
复制
Typeface fontHelvetica = Typeface.createFromAsset(this.getResources().getAssets(), "font/helvetica_font.ttf");
injectTypeface("helvetica", fontHelvetica);

private boolean injectTypeface(String fontFamily, Typeface typeface) {
        try {
            Field field = Typeface.class.getDeclaredField("sSystemFontMap");
            field.setAccessible(true);
            Object fieldValue = field.get(null);
            Map<String, Typeface> map = (Map<String, Typeface>) fieldValue;
            map.put(fontFamily, typeface);
            return true;
        } catch (Exception e) {
            Log.e("Font-Injection", "Failed to inject typeface.", e);
        }
        return false;
    }

之后,您可以按照您的问题中提到的在XML中使用。

票数 0
EN

Stack Overflow用户

发布于 2014-11-01 22:15:10

您可以通过创建扩展TextView的CustomTextView来实现,如下所示

代码语言:javascript
复制
public class MyTextView extends TextView {

public MyTextView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    init();
}

public MyTextView(Context context, AttributeSet attrs) {
    super(context, attrs);
    init();
}

public MyTextView(Context context) {
    super(context);
    init();
}

private void init() {
    Typeface tf = Typeface.createFromAsset(getContext().getAssets(),
                                           "your_font.ttf");
    setTypeface(tf);
}

}

但请记住,在较老的android版本中存在严重的内存问题。请参阅此问题

https://code.google.com/p/android/issues/detail?id=9904

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26689961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档