Simplecursoradaptor中的自定义文本字体

时间:2012-11-24 12:07:00

标签: android simplecursoradapter typeface custom-font

我已经创建了一个使用SimpleCursoradapter的应用程序。

    String[] from = new String[] {"title","notes","image"};
    int[] to = new int[] { R.id.esodaTextView, R.id.amountTextView, R.id.imageView1}; 
    esodaAdapter = new SimpleCursorAdapter (this, R.layout.recipe_list_item, null, from, to);

如您所见,我在2个TextViews(esodaTextView + amountTextView)和一个imageView上显示三个数据。

问题是如何将自定义字体(在资源文件夹中保存)设置为这两个TextViews(esodaTextView + amountTextView),以便我可以使用自定义字体显示文本。

这是列表项的xml文件:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relativeLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_margin="10dp"
android:background="#55eee9e9" >

<TextView 
android:id="@+id/esodaTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:textSize="20dp"
android:textColor="#000000"
android:minHeight="?android:attr/listPreferredItemHeight"
android:gravity="center_vertical" />

<TextView
android:id="@+id/amountTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/esodaTextView"
android:gravity="center_vertical"
android:paddingLeft="10dp"
android:paddingBottom="5dp"
android:textSize="12dp" />

<ImageView
android:id="@+id/imageView1"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_centerVertical="true"
android:layout_marginRight="10dp"
android:layout_alignParentRight="true"
android:src="@drawable/ic_launcher" />

</RelativeLayout>

我知道我可以通过以下代码以编程方式设置自定义字体,但我如何在Simplecursoradaptor中使用它?

 TextView txt1 = (TextView) findViewById(R.id.textView1);  
 Typeface font = Typeface.createFromAsset(getAssets(), "segoescb.ttf");  
 txt1.setTypeface(font);

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

您要做的是覆盖SimpleCursorAdapter的ViewBinding

SimpleCursorAdapter.ViewBinder binding=adapter.setViewBinder( new SimpleCursorAdapter.ViewBinder()
  {
    boolean SetViewValue(View view, Cursor cursor, int columnIndex)
    {
      TextView tv=(TextView)view.findViewById(R.id.iesodaTextView)
      //Do what you want here
      return true;
    }
  });