2016-07-29 3 views
0

Я хочу изменить шрифт textview внутри android.Изменение шрифта в Android делает приложение аварийным?

Вот код:

TextView textView = (TextView) findViewById(R.id.textView); 
    Typeface font = Typeface.createFromAsset(getAssets(), "fonts/Roboto-Thin.ttf"); 
    textView.setTypeface(font); 

И я поставил шрифт в src/main/assets/fonts папку.

Но когда я пытаюсь запустить приложение (на эмуляторе), он сработает. Почему это?

EDIT: вот мое сообщение об ошибке, которое я получаю.

E/AndroidRuntime: FATAL EXCEPTION: main 
       Process: com.asus.wetr, PID: 3973 
       java.lang.RuntimeException: Unable to start activity ComponentInfo{com.asus.wetr/com.asus.wetr.MainActivity}: java.lang.RuntimeException: Font asset not found fonts/Roboto-Thin.TTF 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
        at android.app.ActivityThread.-wrap11(ActivityThread.java) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:148) 
        at android.app.ActivityThread.main(ActivityThread.java:5417) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
       Caused by: java.lang.RuntimeException: Font asset not found fonts/Roboto-Thin.TTF 
        at android.graphics.Typeface.createFromAsset(Typeface.java:190) 
        at com.asus.wetr.MainActivity.onCreate(MainActivity.java:23) 
        at android.app.Activity.performCreate(Activity.java:6237) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)  
        at android.app.ActivityThread.-wrap11(ActivityThread.java)  
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)  
        at android.os.Handler.dispatchMessage(Handler.java:102)  
        at android.os.Looper.loop(Looper.java:148)  
        at android.app.ActivityThread.main(ActivityThread.java:5417)  
        at java.lang.reflect.Method.invoke(Native Method)  
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  
Application terminated. 

EDIT2: вот мой activity.xml в соответствии с запросом.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.asus.wetr.MainActivity" 
android:background="@drawable/background_color"> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Hello World!" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="238dp" 
    android:id="@+id/textView" 
    android:textAppearance="@style/TextAppearance.AppCompat.Display1" 
    android:textColor="#FFF"/> 
</RelativeLayout> 
+1

Укажите фактический аварийный сброс/ошибку. – alzee

+0

Укажите, какие ошибки вы получаете! – Shank

+0

Пожалуйста, удалите каталог 'fonts' в' assets' и измените путь в методе 'createFromAsset'. – jakubbialkowski

ответ

1

Мне удалось выяснить свою проблему. Ребята, я хочу поблагодарить вас всех вас за вклад. Я сделал небольшую ошибку (я новичок в этой ошибке), которая все испортила.

Я ставлю этот код:

TextView textView = (TextView) findViewById(R.id.textView); 
    Typeface thisfont = Typeface.createFromAsset(getAssets(), "Roboto-Thin.ttf"); 
    textView.setTypeface(thisfont); 

до этого:

 setContentView(R.layout.activity_main); 

, который не будет работать (очевидно, для большинства из вас, почему), потому что макет не были установлены еще. Это должно быть после. Урок выучен.

3

Вы забыли передать TextView контекст для createFromAsset метод TypeFace класса

Использование:

Typeface tf = Typeface.createFromAsset(textView.getContext() 
      .getAssets(), "fonts/Roboto-Thin.ttf"); 

Я надеюсь, что это поможет вам.

+0

Я сделал, но теперь я получаю эту ошибку:'java.lang.NullPointerException: попытка вызвать виртуальный метод 'android.content.Context android.widget.TextView.getContext()' on ссылка на нулевой объект », любые идеи? –

+0

опубликуйте свою активность.xml пожалуйста –

+0

Я сделал сейчас под edit2, пожалуйста, проверьте. –

1

Глядя в StackTrace:

Font asset not found fonts/Roboto-Thin.TTF

Похоже, ваше имя файла отличается. Даже расширение файла дело дело. Итак, вы уверены, что имя файла точно такое же, вместе с расширением?

+0

Да, я на 100% уверен, я даже щелкнул правой кнопкой мыши по шрифту (в навигации по проекту Android Studio) и скопировал ссылку. Я также сделал, как вы сказали, я удалил каталог шрифтов и изменил его на «Roboto-Thin.ttf» в методе createFromAsset(). Также пробовал с разными шрифтами, и он все равно не работал. Я не знаю, что попробовать дальше? :( –

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