我在为ListView设置自己的字体时遇到问题,我不知道如何使用自己的Adapter类以及我需要什么xml(除了我放置ListView的那个)。我希望(在ListView中)只为具有自己字体的居中文本。 那是我的适配器:
public class MyAdapter extends BaseAdapter {
private String[] objects; // no objects just String array
private final Context context;
public MyAdapter(Context context, String[] objects) {
this.context = context;
this.objects = objects;
}
@Override
public int getCount() {
return objects.length;
}
@Override
public Object getItem(int position) {
return objects[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Object obj = objects[position];
TextView tv = new TextView(context);
tv.setText(obj.toString());
Typeface tf = Typeface.createFromAsset(getAssets(),"fonts/kolejRogFont.ttf");
tv.setTypeface(tf);
return tv;
}
}
它在Lista.java中调用
ListView lv = new ListView(this);
lv.setAdapter(new MyAdapter(this, listview_array));
代码来自StackOverFlow上的另一个主题。
我在线收到错误(未定义的方法):
字体tf = Typeface.createFromAsset(getAssets()," fonts / kolejRogFont.ttf");
2.屏幕上显示任何内容。我应该为ListView布局创建XML吗?它应该包含什么?
答案 0 :(得分:5)
将MyAdapter代码更改为:
public class MyAdapter extends BaseAdapter {
Typeface tf;
private String[] objects; // no objects just String array
private final Context context;
public MyAdapter(Context context, String[] objects) {
this.context = context;
this.objects = objects;
tf = Typeface.createFromAsset(context.getAssets(),"fonts/kolejRogFont.ttf");
}
////Your code ...
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Object obj = objects[position];
TextView tv = new TextView(context);
tv.setText(obj.toString());
tv.setTypeface(tf);
return tv;
}
}
答案 1 :(得分:1)
getAssets()
来自Context
,因此适配器未定义。试试这个:
Typeface tf = Typeface.createFromAsset(context.getAssets(),"fonts/kolejRogFont.ttf");
编辑:作为旁注,我会将该行移动到构造函数并将tf
设置为类变量。每次获取视图时都不需要加载字体。
答案 2 :(得分:0)
有关设置保证金到列表视图的答案,您应该在list_view_items.zml中设置保证金。例如在线性布局中设置边距或填充。