包含外部字体,以便在eclipse xml预览中呈现

时间:2013-04-03 18:41:09

标签: android eclipse fonts textview

我在我的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

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

0 个答案:

没有答案