1

嗨,我Typeface在我的应用程序中使用自定义,代码如下:

public Typeface font;
//Activity on create:
 font = Typeface.createFromAsset(getAssets(),"DINOT-Medium.otf");

TextView tv = (TextView)vi.findViewById(R.id.textView1);
tv.setTypeface(font);

问题是一段时间后它会出现问题:无法再阅读文本,只能看到正方形。你知道为什么会这样吗?如何修复?谢谢

4

2 回答 2

3

像这样创建自定义TextView

public class DINOTMediumTextView extends TextView {

    public DINOTMediumTextView(Context context) {
        super(context);
        setCustomFont(context);
    }

    public DINOTMediumTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        setCustomFont(context);
    }

    public DINOTMediumTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        setCustomFont(context);
    }

    private void setCustomFont(Context context) {
        Typeface tf = Typeface.createFromAsset(context.getAssets(), "fonts/DINOT-Medium.otf");
        setTypeface(tf);
    }
}

将字体文件放入assets/fonts/在资产文件夹中创建一个文件夹

然后在您的布局 xml 中:

<com.yourapp.views.DINOTMediumTextView 
   android:id="blabla"
   android:layout_width="match_parent"
   android:layout_height="wrap_content" />

com.yourapp.views是包含您的DINOTMediumTextView类的包的名称。

于 2012-11-28T12:12:29.567 回答
1

在 Mobiletuts+ 上有非常好的 Android 文本格式教程。快速提示:自定义 Android 字体

编辑:现在自己测试了。这是解决方案。您可以使用名为 fonts 的子文件夹,但它必须位于 assets 文件夹而不是 res 文件夹中。所以

assets/fonts

还要确保字体结尾我的意思是字体文件本身的结尾都是小写的。换句话说,它不应该是 myFont.TTF 而是 myFont.ttf

于 2012-11-28T11:56:52.270 回答