The*_*ter 2 fonts android android-listview
我有ListView
一百个项目滚动很好.我为其中一个添加了一个自定义字体TextView
,现在它不稳定了.我尝试了otf和ttf字体.
这是我如何编码(简化):
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;
}
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
您正在创建相同的字体每一次getView()
被调用时,移动此行到您的构造函数:
myTypeface = Typeface.createFromAsset(convertView.getContext().getAssets(), "fonts/listitemfont.ttf");
Run Code Online (Sandbox Code Playgroud)
并且您可能不需要每次都重新设置字体,就像创建TextView时一样.
if (convertView == null) {
...
holder.t1 = (TextView) convertView.findViewById(R.id.itemName);
holder.t1.setTypeface(myTypeface); // Move this here
}
Run Code Online (Sandbox Code Playgroud)
看来你每次调用getView时都会创建一个新的Typeface(这很多).尝试myTypeface = Typeface.createFromAsset(convertView.getContext().getAssets(), "fonts/listitemfont.ttf");
进入适配器的构造函数.
归档时间: |
|
查看次数: |
886 次 |
最近记录: |