2011-05-03 32 views
0

嘿,我想将其中一个TextViews的TypeFace更改为外部字体..我该怎么做?
代码:在ListView行中更改TextView的属性xml

public class English 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> 

此崩溃,因为空指针的:

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

那么我怎样才能到达行中的TextView来改变它的TypeFace?由于

回答

1

您可以尝试通过

查看rowView = adapter.getView(...),以获得每个列表项的布局;

然后通过

TextView的TXT =(TextView的)rowView .findViewById(R.id.QuranEnglishTextViewEnglish)得到的布局的TextView; txt.setTypeFace(...);

并设置您的TypeFaces。还没有测试过,但我想它可以工作。

但我建议扩展自己的BaseAdapter。然后创建另一个列表行类,为您的BaseAdapter提供膨胀的布局。您可以轻松地为每个TextView设置字体。