android ListView中的自定义字体

我在整个应用程序中使用自定义字体(其中,顺便提一句,我沮丧地发现,必须用手动方式应用于每个控件!),我需要将其应用于列表视图.问题是,我无法看到我将列表字体中使用的textview设置为我的自定义字体(因为我从来没有实例化 – 这一切都由适配器照顾).

我最理想的是能够使用这样的适配器:

new ArrayAdapter(Context context,TextView textView,List<T> objects)

这样我可以做:textView.setTypeface,然后填充我的列表.有没有人知道有没有办法做这些事情呢?

解决方法

您不能这样做,因为您传递给ArrayAdapter的文本视图资源在每次使用时都会膨胀.

您需要创建自己的适配器并提供自己的视图.

适配器的一个例子可以是

public class MyAdapter extends BaseAdapter {

private List<Object>        objects; // obviously don't use object,use whatever you really want
private final Context   context;

public CamAdapter(Context context,List<Object> objects) {
    this.context = context;
    this.objects = objects;
}

@Override
public int getCount() {
    return objects.size();
}

@Override
public Object getItem(int position) {
    return objects.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public View getView(int position,View convertView,ViewGroup parent) {

    Object obj = objects.get(position);

    TextView tv = new TextView(context);
    tv.setText(obj.toString()); // use whatever method you want for the label
    // set whatever typeface you want here as well
    return tv;
}

}

然后你可以这样设置

ListView lv = new ListView(this);
lv.setAdapter(new MyAdapter(objs));

希望这应该让你走.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...