Определить TextView TypeFace из XML? - PullRequest
0 голосов
/ 03 мая 2011

У меня есть ListView, который использует SimpleAdapter, каждая строка имеет 2 TextView, и я хотел бы использовать внешний шрифт для одного из двух TextView. Вот код класса:

  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>

Так как я могу поместить внешнюю гарнитуру TextViewто есть в строке (quran_english_row.xml)?Я попытался использовать эту строку, хотя она и разбила мое приложение:

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

1 Ответ

0 голосов
/ 03 мая 2011
R.id.QuranEnglishTextViewArabic 

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

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