2013-03-08 3 views
4

У меня есть пользовательский шрифт для моей активности Android.Пользовательский шрифт для Android listview

MainActivity.class

private void initControls() { 
    // TODO Auto-generated method stub 
    header = (TextView) findViewById (R.id.tvAccommodations); 
    lv = (ListView) findViewById (R.id.lvAccommodations); 
    text = (TextView) findViewById (R.id.textView); 

    Typeface tf = Typeface.createFromAsset(getAssets(), 
      "fonts/heartbre.ttf"); 
    header.setTypeface(tf); 
    text.setTypeface(tf); 



    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, 
        R.array.abra_hotel, R.layout.custom_list_text); 
      lv.setAdapter(adapter); 
      header.setText(value); 

custom_list_text.xml

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/list_text" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:textSize="18sp" 
android:textStyle="bold" 
android:text="@string/app_name" 
android:paddingLeft="6dip" /> 

Android бросает NullPointerException. Почему это так? Любая помощь приветствуется. Благодарю.

LogCat:

03-08 19:48:03.859: E/AndroidRuntime(413): Caused by: java.lang.NullPointerException 
    03-08 19:48:03.859: E/AndroidRuntime(413): at com.say.philippineexplorer.PlaceAccommodations.initControls(PlaceAccommodations.java:34) 
    03-08 19:48:03.859: E/AndroidRuntime(413): at com.say.philippineexplorer.PlaceAccommodations.onCreate(PlaceAccommodations.java:22) 
+0

вы можете поставить журналы – DjHacktorReborn

+0

опубликовать исключение журнала – Sri

+0

@DjHacktorReborn я обновил сообщение –

ответ

10

Вот пользовательский класс адаптера и конструктор

class CustomAdapter extends ArrayAdapter<CharSequence>{ 

    Context context; 
    int layoutResourceId;  
    CharSequence data[] = null; 
    Typeface tf; 

public CustomAdapter(Context context, int layoutResourceId, CharSequence[] data, String FONT) { 
    super(context, layoutResourceId, data); 
    this.layoutResourceId = layoutResourceId; 
    this.context = context; 
    this.data = data; 
    tf = Typeface.createFromAsset(context.getAssets(), FONT); 
} 

Поместите шрифт, который вы хотите использовать в вашей папке активов и заполнить ваш ListView, как это:

listAdapter = new CustomAdapter(this, R.layout.custom_list_text, R.array.abra_hotel, "name_of_font.ttf"); 
+0

Он не работает для моего адаптера, вот SO: http://stackoverflow.com/questions/21439707/typeface-not-taking-place-in-custom-arrayadapter?answertab=active#tab-top – vlio20

+1

Вы создали свойство 'tf' и задали для него' Typeface', но ' tf' не привязано ни к чему. Как этот код задает шрифт рендеринга элемента? –

+0

Я поместил шрифт sin «src/assets/fonts/myfont.ttf» и перешел в адаптер «fonts/myfont.ttf», и он сработал. Благодаря! –

2

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

How to change color and font on ListView

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