首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Android-listView中自定义字体会让滚动变得迟缓吗?

在Android-listView中自定义字体会让滚动变得迟缓吗?
EN

Stack Overflow用户
提问于 2012-10-20 01:42:37
回答 2查看 911关注 0票数 2

我有一台有100个项目的ListView,可以很好地滚动。我给其中一个TextView添加了一个自定义字体,现在字体不稳定,我已经尝试过了。

下面是我如何编写代码(简化):

代码语言:javascript
复制
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;
    }

有没有更好的方法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-20 01:45:58

每次调用getView()时,您都会创建相同的字体,请将此行移动到您的构造函数中:

代码语言:javascript
复制
myTypeface = Typeface.createFromAsset(convertView.getContext().getAssets(), "fonts/listitemfont.ttf");

而且,您可能也不需要每次都重新设置字体,只需在创建TextView时。

代码语言:javascript
复制
if (convertView == null) {
    ...
    holder.t1 = (TextView) convertView.findViewById(R.id.itemName);
    holder.t1.setTypeface(myTypeface); // Move this here
}
票数 8
EN

Stack Overflow用户

发布于 2012-10-20 01:45:33

每次调用getView时,似乎都会创建一种新的字体(这是很多)。尝试将myTypeface = Typeface.createFromAsset(convertView.getContext().getAssets(), "fonts/listitemfont.ttf");移动到适配器的构造函数中。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12979593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档