如何在自定义ListView中设置自定义字体

时间:2014-09-07 00:52:16

标签: android listview android-listview

我是Android新手编程的新手,我正在努力解决以下问题。 我使用自定义ListView来显示商店名称及其徽标。 我想更改自定义字体的标准textview字体。

我用于普通文本视图的方法不起作用。 你能帮帮我吗?

以下代码是我的ListView适配器。

package com.mallspecials.shoppingmallspecialsau;

import android.content.Context;
import android.content.res.AssetManager;
import android.graphics.Color;
import android.graphics.Typeface;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class ShowTheStoreAdapter extends BaseAdapter {


       // Declare Variables
    Context context;
    String[] thestore;

    int[] logo;
    LayoutInflater inflater;

    public ShowTheStoreAdapter(Context context, String[] thestore,  int[] logo) {
        this.context = context;
        this.thestore = thestore;
        this.logo = logo;

    }

    private AssetManager getAssets() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public int getCount() {
        return thestore.length;
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    public View getView(int position, View convertView, ViewGroup parent) {

 //Set Snell Roundhand Font for the StoreName
    Typeface font = Typeface.createFromAsset(getAssets(), "Snell Roundhand Bold Script.ttf");

        // Declare Variables
        TextView StoreName;
        ImageView imglogo;

        inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        View itemView = inflater.inflate(R.layout.listview_stores, parent, false);

            //Set the StoreName Text
            StoreName = (TextView) itemView.findViewById(R.id.thestore);
            StoreName.setTextColor(Color.RED);
            StoreName.setShadowLayer(3, -2, -5,(Color.YELLOW));
            StoreName.setTypeface(font);
            StoreName.setText(thestore[position]);

        // Locate the ImageView in listview_stores.xml
        imglogo = (ImageView) itemView.findViewById(R.id.storelogo);
        // Capture position and set to the ImageView
        imglogo.setImageResource(logo[position]);

        return itemView;
    }


}

以下是我的适配器View实现的代码。

list = (ListView) findViewById(R.id.listview);
adapter = new ShowTheStoreAdapter(this, thestore, storelogo);
list.setAdapter(adapter);       

2 个答案:

答案 0 :(得分:1)

在BaseAdapter的帮助下为ListView创建子视图。在该SubView中添加自定义textview。

https://github.com/johnkil/Android-RobotoTextView

答案 1 :(得分:0)

列表视图本身不负责绘制项目,它使用适配器来创建列表项。此适配器创建一个视图以在需要时显示列表项。要更改用于显示列表项的字体,您必须更改适配器以返回包含新字体的视图。这可以在Adapter.getView方法中完成。如果您当前正在使用标准的Adapter实现,则可能需要对其进行子类化(或完全替换它)。

请检查:How to change color and font on ListView