2013-08-24 56 views
0

我有ListView。它包含3個不是來自activity_main.xml的TextView。更改不在activity_main.xml中的T​​extView字體

cursor = myDatabase.getJoinedInfo(etSearch.getText().toString().trim()); 

     String[] columns = new String[] { "re_value", "g_value", "ke_value" }; 

     int[] to = new int[] { R.id.tvHiragana, R.id.tvMeaning, R.id.tvKanji }; 

     dataAdapter = new SimpleCursorAdapter(this, R.layout.wordonlist, 
       cursor, columns, to, 0); 

     // Assign adapter to ListView 

     listView.setAdapter(dataAdapter); 

如何更改ListView中TextViews的字體?

final Typeface mFont = Typeface.createFromAsset(getAssets(), 
      "fonts/himaji.otf"); 
    LayoutInflater ltInflater = getLayoutInflater(); 
    View view = ltInflater.inflate(R.layout.wordonlist, null, false); 
    tvHiragana=(TextView) view.findViewById(R.id.tvHiragana); 
    tvHiragana.setTypeface(mFont); 

此代碼不能改變的TextView的字體。我做錯了什麼?

+0

所以'wordonlist.xml'是列表項佈局文件...正確嗎? – Squonk

+0

要使用存儲在「assets」中的字體,您需要編寫一個自定義適配器。 – Vikram

回答

0

您可以使用xml設置您的TextViews(如行佈局),如styles and themes article中所述。

如果您需要以編程方式更改字體(如只針對某些情況下,或使用在編譯時不知道參數),你可以創建一個匿名子類(或正子類)的SimpleCursorAdapter其適用的變化在適配器的方法getView。爲此,請參閱slightly related answer to text color changing。您的代碼擴大了佈局(從而創建了一個新的View實例),並更改了該實例,而不是添加到列表中的實例。