2016-05-30 3 views
1

Мое приложение разбивается на следующий код. Я пытаюсь дать пользовательский шрифт в textView. Каталог ресурсов отлично, поскольку я дважды проверил его.Сбой приложения для Android на Typeface.createFromAsset

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    TextView title = (TextView) findViewById(R.id.textView); 
    String BANGLA_FONT_SOLEMAN_LIPI = "/SolaimanLipi_Bold_10-03-12.ttf"; 
    Typeface tf = Typeface.createFromAsset(getApplicationContext().getAssets(), 
      BANGLA_FONT_SOLEMAN_LIPI); 
    title.setTypeface(tf); 
} 

Когда приложение аварий производит следующие ошибки: Вход

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.gsl.banglafonttest/com.gsl.banglafonttest.MainActivity}: java.lang.RuntimeException: native typeface cannot be made 
                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364) 
                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2416) 
                       at android.app.ActivityThread.access$600(ActivityThread.java:174) 
                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1382) 
                       at android.os.Handler.dispatchMessage(Handler.java:107) 
                       at android.os.Looper.loop(Looper.java:194) 
                       at android.app.ActivityThread.main(ActivityThread.java:5409) 
                       at java.lang.reflect.Method.invokeNative(Native Method) 
                       at java.lang.reflect.Method.invoke(Method.java:525) 
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:606) 
                       at dalvik.system.NativeStart.main(Native Method) 
                      Caused by: java.lang.RuntimeException: native typeface cannot be made 
                       at android.graphics.Typeface.<init>(Typeface.java:175) 
                       at android.graphics.Typeface.createFromAsset(Typeface.java:149) 
                       at com.gsl.banglafonttest.MainActivity.onCreate(MainActivity.java:17) 
                       at android.app.Activity.performCreate(Activity.java:5122) 
                       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1150) 
                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2328) 
                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2416)  
                       at android.app.ActivityThread.access$600(ActivityThread.java:174)  
                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1382)  
                       at android.os.Handler.dispatchMessage(Handler.java:107)  
                       at android.os.Looper.loop(Looper.java:194)  
                       at android.app.ActivityThread.main(ActivityThread.java:5409)  
                       at java.lang.reflect.Method.invokeNative(Native Method)  
                       at java.lang.reflect.Method.invoke(Method.java:525)  
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)  
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:606)  
                       at dalvik.system.NativeStart.main(Native Method)  
+0

Где у сохранил папку активов? – Raghavendra

+0

Надеюсь, вы видели это http://stackoverflow.com/questions/7531856/issue-when-using-a-custom-font-native-typeface-cannot-be-made – Raghavendra

+0

Настройка шрифта с использованием Java-кода затруднена из-за несколько строк, я создал библиотеку для установки пользовательских шрифтов. Вы можете найти использование библиотеки в этом ответе http://stackoverflow.com/a/42001474/4446392 –

ответ

1

Есть в основном 4 вещи, которые могут вызвать это:

1.You используют неправильное расширение

2. Вы разместили шрифты в папке с активами, а не внутри активов/шрифтов/

3.You опечатка шрифты

4.The шрифты должны быть в нижнем регистре (в моем случае решение было переименовать MyFont.ttf в myfont.ttf, странный)

+0

Проблема в моем случае была номером 2. Я разместил шрифты в папке «Ресурсы/Шрифты», и она решила проблему. –

1

Typeface тс = Typeface.createFromAsset (контекст .getAssets(), "font/Nunito-Light.ttf"); vh.textView_header.setTypeface (tf, 45);

Это образец, который я использовал в своем приложении, пользовательский шрифт находится в папке с шрифтом в каталоге ресурсов Android.

1

Я бы порекомендовал вам Calligraphy избавиться от пользовательских TextView или «шаблонный» .setTypeFace

я использовал, чтобы иметь собственный TextView но Каллиграфия сделал мой код намного чище.

+0

Спасибо за предложение. Я пробовал это, и он работает как шарм. –

0

Решение в моем случае создает папку шрифтов в папке с ресурсами и сохраняет файл там.

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    TextView title = (TextView) findViewById(R.id.textView); 
    String BANGLA_FONT_SOLEMAN_LIPI = "font/SolaimanLipi_22-02-2012.ttf"; 
    Context cn=getApplicationContext(); 
    Typeface tf = Typeface.createFromAsset(cn.getAssets(), 
      BANGLA_FONT_SOLEMAN_LIPI); 
    title.setTypeface(tf); 
    title.setText(R.string.text_of_title); 
} 

}

Смежные вопросы