我在整个应用程序中使用自定义字体(顺便说一句,我沮丧地发现您必须以编程方式手动将其应用到每个控件!),并且我需要将它应用到 ListView 。问题是我看不到我在哪里将列表字体中使用的 TextView 设置为我的自定义字体(因为我从未实例化它 - 这一切都由适配器处理)。
我最理想的是能够使用这样的适配器:
new ArrayAdapter(Context context, TextView textView, List<T> objects)
这样我可以做:textView.setTypeface 在填充我的列表之前。有谁知道是否有办法按照这些思路做某事?
最佳答案
如果您不想创建新类,您可以在创建适配器时覆盖 getView 方法,这是一个带有标题和副标题的简单适配器示例:
Typeface typeBold = Typeface.createFromAsset(getAssets(),"fonts/helveticabold.ttf");
Typeface typeNormal = Typeface.createFromAsset(getAssets(), "fonts/helvetica.ttf");
SimpleAdapter adapter = new SimpleAdapter(this, items,R.layout.yourLvLayout, new String[]{"title",
"subtitle" }, new int[] { R.id.rowTitle,
R.id.rowSubtitle }){
@Override
public View getView(int pos, View convertView, ViewGroup parent){
View v = convertView;
if(v== null){
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v=vi.inflate(R.layout.yourLvLayout, null);
}
TextView tv = (TextView)v.findViewById(R.id.rowTitle);
tv.setText(items.get(pos).get("title"));
tv.setTypeface(typeBold);
TextView tvs = (TextView)v.findViewById(R.id.rowSubtitle);
tvs.setText(items.get(pos).get("subtitle"));
tvs.setTypeface(typeNormal);
return v;
}
};
listView.setAdapter(adapter);
items 是你的 map ArrayList
希望对你有帮助
关于android - android ListView 中的自定义字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4576441/