我试图为我的所有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及更高版本开发,因此无需担心此解决方案的泄漏。
感谢任何帮助。
答案 0 :(得分:0)
您是在资源中创建了一个名为fonts的文件夹,还是直接放在assets文件夹中?如果未创建文件夹,则创建一个文件夹并将您的字体文件放在那里 。 如果没有字体文件夹使用这样的路径。
Typeface font = Typeface.createFromAsset(getAssets(), "myfont.TTF");
其他
Typeface font = Typeface.createFromAsset(getAssets(), "fonts/myfont.TTF");
有关详情,请尝试this