listView的自定义视图 - 字体

时间:2012-10-13 00:56:34

标签: android android-layout fonts android-listview

我在为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上的另一个主题。

  1. 我在线收到错误(未定义的方法):

    字体tf = Typeface.createFromAsset(getAssets()," fonts / kolejRogFont.ttf");

  2. 2.屏幕上显示任何内容。我应该为ListView布局创建XML吗?它应该包含什么?

3 个答案:

答案 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中设置保证金。例如在线性布局中设置边距或填充。