0

我在我的 android 应用程序中包含外部字体资产,但是,eclipse 无法在 xml 预览中呈现它们。

当我在应用程序中包含字体(将 ttf 放在 /assets/fonts 文件夹中)并使用代码动态设置我的 textview 字体时:

mFont = Typeface.createFromAsset(getAssets(),"fonts/fontfilename.ttf");
textview = (TextView) findViewById(R.id.text_view);
textview.setTypeface(mFont);

文本使用我的设备或模拟器上的应用程序中的字体正确呈现,但是我不知道如何让 eclipse 在 xml 预览中呈现它们。我试过扩展 TextView 类:

public class ExTextView extends TextView {

private static final Typeface MY_FONT_01 = Typeface.create("mfont-01", 0); //, Typeface.BOLD);
private static final Typeface MY_FONT_02 = Typeface.create("mfont-02", 0); //, Typeface.NORMAL);

public ExTextView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);

    if (getTypeface().equals(MY_FONT_01)) {
        Typeface mFont = Typeface.createFromAsset(getContext().getAssets(),"fonts/myfont01.ttf");
        setTypeface(mFont);
        setPadding(0, (int) (-0.9f * getTextSize()), 0, (int) (-0.2f * getTextSize()));
        setTextSize(0x00000001, (int)48);
    } else if (getTypeface().equals(MY_FONT_02)) {
        Typeface mFont = Typeface.createFromAsset(getContext().getAssets(),"fonts/myfont02.ttf");
        setTypeface(mFont);
        setPadding(0, (int) (-0.5f * getTextSize()), 0, (int) (-0.5f * getTextSize()));
        setTextSize(0x00000001, (int) 24);
    }
}
}

并将其放入xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<com.example.extendedtextview.ExTextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:fontFamily="mfont-01"
    android:text="ExTextView-01" />

<com.example.extendedtextview.ExTextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:fontFamily="mfont-02"
    android:text="ExTextView-02" />

</LinearLayout>

但是字体没有根据 ExTextView.java 中声明的内容呈现。我知道这对于这个特别简单的应用程序来说是困难的,但在更复杂的场景中,这种结构可能很有用,所以我想弄清楚如何让它工作。

当我尝试运行该应用程序时,我在 logcat 中收到错误:

04-03 11:38:08.149: E/AndroidRuntime(689): Caused by: android.view.InflateException: Binary XML file line #7: Error inflating class com.example.extendedtextview.ExTextView

非常感谢任何建议或提示。

4

0 回答 0