我想将自定义字体应用于我的Spinner。 我发现的唯一方法是创建一个自定义适配器。 这是我的代码:
private class CustomAdapter extends ArrayAdapter {
private Context context;
private List<CharSequence> itemList;
public CustomAdapter(Context context, int textViewResourceId,List<CharSequence> itemList) {
super(context, textViewResourceId);
this.context=context;
this.itemList=itemList;
}
public TextView getView(int position, View convertView, ViewGroup parent) {
TextView v = (TextView) super
.getView(position, convertView, parent);
Typeface myTypeFace = Typeface.createFromAsset(context.getAssets(),
"fonts/gilsanslight.otf");
v.setTypeface(myTypeFace);
v.setText(itemList.get(position));
return v;
}
public TextView getDropDownView(int position, View convertView,
ViewGroup parent) {
TextView v = (TextView) super
.getView(position, convertView, parent);
Typeface myTypeFace = Typeface.createFromAsset(context.getAssets(),
"fonts/gilsanslight.otf");
v.setTypeface(myTypeFace);
v.setText(itemList.get(position));
return v;
}
}
然后我使用 List<CharSequence> itemList = new ArrayList<CharSequence>(
Arrays.asList(items));
mySpinnerArrayAdapter = new CustomAdapter(context,android.R.layout.simple_spinner_item,itemList);
spinner.setAdapter(mySpinnerArrayAdapter);
我这么做之后,我的适配器为空。请问有人可以帮助我吗?items包含了一个国家列表。
谢谢!
getDropDownView()
方法。奇怪的是,许多教程都跳过了这个方法。在我的情况下,当下拉列表展开时,它显示了item.toString()而不是项内的字符串(字段)。我同意@ValMartinez的观点,您可以重构代码并提取创建TextView
的方法,甚至可以从getDropDownView()
中调用getView()
。 - CoolMind