我試圖在我的ArrayAdapter
中更改TextView
的字體。字體chantelli_antiqua.ttf
位於資產文件夾中。ArrayAdapter中textview的自定義字體
這裏是我的Java代碼:
listItemAdapter = new ArrayAdapter<MenuItem>(this, R.layout.listitem, menuItems);
Typeface font = Typeface.createFromAsset(getAssets(), "chantelli_antiqua.ttf");
TextView v = (TextView)listItemAdapter.getView(0, null, null);
v.setTypeface(font);
XML的列表項佈局:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
android:textSize="30sp"
/>
我敢肯定問題出在Adapter.getView(int, View, ViewGroup)
方法。我只是不明白要作爲變量傳遞什麼,並嘗試null
。但這並不符合我的願望。
如何將Adapter
中的TextView
的字體更改爲自定義字體?
更新
根據精靈的建議,我創建了一個MenuItemAdapter
延伸ArrayAdapter<MenuItem>
:
public class MenuItemAdapter extends ArrayAdapter<MenuItem>
{
private Typeface font;
public MenuItemAdapter(Context context, int textViewResourceId, List<MenuItem> objects)
{
super(context, textViewResourceId, objects);
font = Typeface.createFromAsset(context.getAssets(), "chantelli_antiqua.ttf");
}
@Override
public View getView(int position, View view, ViewGroup viewGroup)
{
((TextView)view).setTypeface(font);
return super.getView(position, view, viewGroup);
}
}
而且改變了我的Java代碼:
listItemAdapter = new MenuItemAdapter(this, R.layout.listitem, menuItems);
但現在我的應用程序崩潰後
onCreate
的
ListActivity
,但在擊中
getView(...)
的斷點之前,我還沒有能夠弄清楚爲什麼。任何建議?
UPDATE2
改變了代碼的getView(...)來:
@Override
public View getView(int position, View view, ViewGroup viewGroup)
{
View v = super.getView(position, view, viewGroup);
((TextView)v).setTypeface(font);
return v;
}
和工作原理。 :)
[應用自定義字體使用佈局](http://androidtrainningcenter.blogspot.in/2013/07/applying-custom-font-in-entire-android.html) – Sameer 2013-07-12 05:46:27