我尝试在我的应用程序中添加字体,但每次我的应用程序崩溃时。
我的字体是在assets\font
文件夹中正确插入的.ttf。
我的Java代码是:
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView myTextView1=(TextView)findViewById(R.id.textBox1);
// Typeface typeFace= Typeface.createFromAsset(getAssets(), "fonts/Intellecta_Digital.ttf");
Typeface typeFace1= Typeface.SERIF;
myTextView1.setTypeface(typeFace1);
TextView myTextView2=(TextView)findViewById(R.id.textBox2);
Typeface typeFace2= Typeface.DEFAULT_BOLD;
myTextView2.setTypeface(typeFace2);
TextView myTextView3=(TextView)findViewById(R.id.textBox3);
Typeface typeFace3= Typeface.MONOSPACE;
myTextView3.setTypeface(typeFace3);
TextView myTextView4=(TextView)findViewById(R.id.textBox4);
AssetManager mngr =getAssets();
Typeface typeFace4= Typeface.createFromAsset(mngr, "fonts/font_example.ttf");
myTextView4.setTypeface(typeFace4);
}
}
我的XML是:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
tools:ignore="MergeRootFrame"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30dp"
android:text="Font Typeface"
android:id="@+id/textBoxStandard" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30dp"
android:text="Font Typeface"
android:id="@+id/textBox1" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30dp"
android:text="Font Typeface"
android:id="@+id/textBox2" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30dp"
android:text="Font Typeface"
android:id="@+id/textBox3" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30dp"
android:text="Font Typeface"
android:id="@+id/textBox4" />
</LinearLayout>
这是我的LogCat:
11-17 09:58:20.940 2593-2593/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{it.co.matteopellegrini.android.fontapp/it.co.matteopellegrini.android.fontapp.MainActivity}: java.lang.RuntimeException: native typeface cannot be made
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
at android.app.ActivityThread.access$600(ActivityThread.java:123)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:817)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.RuntimeException: native typeface cannot be made
at android.graphics.Typeface.<init>(Typeface.java:147)
at android.graphics.Typeface.createFromAsset(Typeface.java:121)
at it.co.matteopellegrini.android.fontapp.MainActivity.onCreate(MainActivity.java:31)
at android.app.Activity.performCreate(Activity.java:4470)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
at android.app.ActivityThread.access$600(ActivityThread.java:123)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:817)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
at dalvik.system.NativeStart.main(Native Method)
我尝试了很多次,更改了字体,更改了Java代码,但我没有解决方案。
!!!!!!!!!!!我发现这只是因为我使用Android工作室的应用程序!!!!!!!!!!!
!!!!!!!!!!!如果我使用ECLIPSE它工作!!!!!!!!!!!
答案 0 :(得分:0)
您的字体文件已损坏或不受支持。您可以将它放在SD卡上并从文件中加载它,以确保它不会对您的资产造成问题。
仔细检查文件的扩展名是否为大写字母,例如: - example_font.TTF 字体经常出现这种情况,可能会被忽视。
请看这个问题: - https://code.google.com/p/android/issues/detail?id=9904
从资产文件夹加载字体时,android中存在一些错误。试试上面的解决方案。它会起作用
答案 1 :(得分:0)
对不起, 我的错误是字体文件夹是字体,但我创建字体
答案 2 :(得分:0)
你的问题是/font_example.ttf“);可能从window fonts文件夹中复制你的字体而.TTF是大写的你应该把它改成font_example.TTF