【问题标题】:Custom text font inside a SimplecursoradaptorSimplecursoradaptor 中的自定义文本字体
【发布时间】:2012-11-24 12:06:59
【问题描述】:

我做了一个应用程序,我使用 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 个 TextView(esodaTextView + amountTextView)和一个 imageView 上显示了三个数据。

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

这是列表项的 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);

提前感谢您的帮助。

【问题讨论】:

    标签: android simplecursoradapter typeface custom-font


    【解决方案1】:

    你想要做的是覆盖 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;
        }
      });
    

    【讨论】:

    • 在代码行:“TextView tv=view.findViewById(R.id.iesodaTextView);”我收到一个错误:类型不匹配:无法从 View 转换为 TextView
    • 已修复,只需对findViewById的输出进行类型转换即可。
    • 现在我没有收到错误消息,但是...文本没有以新字体显示...我添加了“return true;”在您的代码中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多