我有一台有100个项目的ListView,可以很好地滚动。我给其中一个TextView添加了一个自定义字体,现在字体不稳定,我已经尝试过了。
下面是我如何编写代码(简化):
public class ItemAdapter extends ArrayAdapter<ItemObject> implements
SectionIndexer {
private Typeface myTypeface; // class variable
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = inflater.inflate(R.layout.item_row_layout, parent,
false);
holder = new ViewHolder();
holder.t1 = (TextView) convertView.findViewById(R.id.itemName);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
ItemObject io = getItem(position);
String name = io.name;
myTypeface = Typeface.createFromAsset(convertView.getContext().getAssets(), "fonts/listitemfont.ttf");
holder.t1.setText(name);
holder.t1.setTypeface(myTypeface);
return convertView;
}有没有更好的方法?
发布于 2012-10-20 01:45:58
每次调用getView()时,您都会创建相同的字体,请将此行移动到您的构造函数中:
myTypeface = Typeface.createFromAsset(convertView.getContext().getAssets(), "fonts/listitemfont.ttf");而且,您可能也不需要每次都重新设置字体,只需在创建TextView时。
if (convertView == null) {
...
holder.t1 = (TextView) convertView.findViewById(R.id.itemName);
holder.t1.setTypeface(myTypeface); // Move this here
}发布于 2012-10-20 01:45:33
每次调用getView时,似乎都会创建一种新的字体(这是很多)。尝试将myTypeface = Typeface.createFromAsset(convertView.getContext().getAssets(), "fonts/listitemfont.ttf");移动到适配器的构造函数中。
https://stackoverflow.com/questions/12979593
复制相似问题