我在我的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
非常感谢任何建议或提示。