2011-05-03 47 views
0

我有一個使用SimpleAdapter一個ListView,每一行有2個TextViews,我想使用外部字體到兩個TextView的之一..下面是類的代碼:從xml定義TextView TypeFace?

public class QuranEnglish extends Activity { 
<...> 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.quran_english); 

    listview=(ListView) findViewById(R.id.QuranEnglishListView);  
    <..add into list..> 
    SimpleAdapter adapter = new SimpleAdapter(
      this, 
      list, 
      R.layout.quran_english_row, 
      new String[] {"Arabic","English"}, 
      new int[] {R.id.QuranEnglishTextViewArabic,R.id.QuranEnglishTextViewEnglish}); 

    listview.setAdapter(adapter); 

XML爲每一行(quran_english_row.xml):

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" android:orientation="vertical"> 
    <LinearLayout android:gravity="right" android:layout_height="wrap_content" android:id="@+id/linearLayout1" android:layout_width="fill_parent"> 
     <TextView android:textSize="21px" android:text="TextView" android:id="@+id/QuranEnglishTextViewArabic" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> 
    </LinearLayout> 

    <TextView android:textSize="21px" android:text="TextView" android:id="@+id/QuranEnglishTextViewEnglish" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> 

</LinearLayout> 

XML的佈局(quran_english.xml):

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" android:orientation="vertical"> 
    <ListView android:id="@+id/QuranEnglishListView" android:layout_width="fill_parent" android:layout_height="fill_parent"></ListView> 

</LinearLayout> 

所以,我怎麼可以把T的外部字體他在行中的TextView(quran_english_row.xml)?我試着用這條線雖然它墜毀我的應用程序:

((TextView) findViewById(R.id.QuranEnglishTextViewArabic)).setTypeface(Typeface.createFromAsset(getAssets(),"dejavusans.ttf")); 
+0

您會得到什麼錯誤?空指針異常? – 2011-05-03 10:00:45

+0

@Vladimir Ivanov是的,NullPointerException – Omar 2011-05-03 10:10:08

回答

0
R.id.QuranEnglishTextViewArabic 

是不是在這裏你的觀點之一的ID。它是一個示例視圖的ID,用於填充列表。爲了改變字體,你需要得到你的列表的一個視圖。如果您選擇了某個視圖,則此功能起作用:

TextView view = getSelectedView(); 
if (view != null) { 
    view.setTypeface(Typeface.createFromAsset(getAssets(),"dejavusans.ttf")); 
} 
+0

getSelectedView()將得到被選中的視圖..我想改變所有TextViews的字體,甚至沒有選擇的字體..我該怎麼做? – Omar 2011-05-03 10:22:25

+0

使用SimpleAdapter的getView()方法。在這裏閱讀更多:http://developer.android.com/reference/android/widget/Adapter.html#getView(int,%20android.view.View,%20android.view.ViewGroup) – 2011-05-03 10:31:00