尝试在应用程序中使用自己的Font抛出错误

时间:2014-12-17 09:29:50

标签: android fonts

我试图为我的所有TextViews / EditViews设置自定义字体,依此类推。我按照这个回答:Is it possible to set a custom font for entire of application?

为此,我在.ttf中有assets/Fonts/myFont.ttf个文件。要将此Font添加到我的所有TextViews,请覆盖TextView-Class

public class MyCustomTextView extends TextView {

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

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

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

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

}

要将其添加到我的TextView,我只需在布局中执行:

 <com.android.faccess.MyCustomTextView
    android:id="@+id/textview"
    style="@style/textview" />

风格在哪里:

<style name="textview">
    <item name="android:layout_width">fill_parent</item>
    <item name="android:layout_height">28dp</item>
    <item name="android:layout_gravity">center_horizontal|center_vertical</item>
    <item name="android:textSize">20sp</item>
    <item name="android:layout_marginLeft">5dp</item>
    <item name="android:layout_marginRight">5dp</item>

错误

我想我确实想念一些非常简单的事情。这是LogCat:

12-17 10:16:21.633: E/AndroidRuntime(2094): android.view.InflateException: Binary XML file line #8: Error inflating class com.android.faccess.MyCustomTextView 12-17 10:16:21.633: E/AndroidRuntime(2094): Caused by: java.lang.RuntimeException: native typeface cannot be made 12-17 10:16:21.633: E/AndroidRuntime(2094): at android.graphics.Typeface.<init>(Typeface.java:175) 12-17 10:16:21.633: E/AndroidRuntime(2094): at android.graphics.Typeface.createFromAsset(Typeface.java:149) 12-17 10:16:21.633: E/AndroidRuntime(2094): at com.android.faccess.MyCustomTextView.init(MyCustomTextView.java:28) 12-17 10:16:21.633: E/AndroidRuntime(2094): at com.android.faccess.MyCustomTextView.<init>(MyCustomTextView.java:18) 12-17 10:16:21.633: E/AndroidRuntime(2094): ... 51 more

我正在为Android 4.0及更高版本开发,因此无需担心此解决方案的泄漏。

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您是在资源中创建了一个名为fonts的文件夹,还是直接放在assets文件夹中?如果未创建文件夹,则创建一个文件夹并将您的字体文件放在那里 。 如果没有字体文件夹使用这样的路径。

Typeface font = Typeface.createFromAsset(getAssets(), "myfont.TTF");

其他

Typeface font = Typeface.createFromAsset(getAssets(), "fonts/myfont.TTF");

有关详情,请尝试this