2

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. オンラインでエラーが発生します (未定義のメソッド):

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

2.画面に何も表示されない。ListView レイアウト用の XML を作成する必要がありますか? それは何を含むべきですか?

4

3 に答える 3

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;
}
}
于 2012-10-13T01:11:21.820 に答える
1

getAssets()からContextのものであるため、アダプターに対して未定義です。これを使用してみてください:

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

編集:補足として、その行をコンストラクターに移動しtf、クラス変数として設定します。ビューを取得するたびにフォントをロードする必要はありません。

于 2012-10-13T01:09:35.747 に答える
0

リストビューにマージンを設定することについての回答については、list_view_items.zml にマージンを設定する必要があります。たとえば、線形レイアウトでマージンまたはパディングを設定します。

于 2016-02-22T12:57:41.723 に答える