将字体设置为android中的listview项

时间:2015-03-28 07:54:50

标签: android listview typeface

我需要为listview项添加自定义字体。我已经使用像这样的

这样的适配器将值添加到列表中
SimpleAdapter adapter = new SimpleAdapter(getBaseContext(), newList, R.layout.club_list2, from, to);

这里我想为club_list2布局中的textviews设置字体。这怎么可能?

3 个答案:

答案 0 :(得分:1)

如果您想从xml设置自定义字体,可以执行此操作

public class TypefaceTextView extends TextView {

    private static Map<String, Typeface> mTypefaces;

    public TypefaceTextView(final Context context) {
        this(context, null);
    }

    public TypefaceTextView(final Context context, final AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public TypefaceTextView(final Context context, final AttributeSet attrs, final int defStyle) {
        super(context, attrs, defStyle);
        if (mTypefaces == null) {
            mTypefaces = new HashMap<String, Typeface>();
        }

        // prevent exception in Android Studio / ADT interface builder
        if (this.isInEditMode()) {
            return;
        }

        final TypedArray array = context.obtainStyledAttributes(attrs, styleable.TypefaceTextView);
        if (array != null) {
            final String typefaceAssetPath = array.getString(
                    R.styleable.TypefaceTextView_customTypeface);

            if (typefaceAssetPath != null) {
                Typeface typeface = null;

                if (mTypefaces.containsKey(typefaceAssetPath)) {
                    typeface = mTypefaces.get(typefaceAssetPath);
                } else {
                    AssetManager assets = context.getAssets();
                    typeface = Typeface.createFromAsset(assets, typefaceAssetPath);
                    mTypefaces.put(typefaceAssetPath, typeface);
                }

                setTypeface(typeface);
            }
            array.recycle();
        }
    }

}

in xml。

<com.example.TypefaceTextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:textSize="30sp"
        android:text="@string/hello_world"
        geekui:customTypeface="fonts/yourfont.ttf" />

并且您的字体应该在asset / fonts /文件夹中

在值内创建资源文件并将其设置为名称attrs.xml

然后复制过去

<resources>

    <declare-styleable name="TypefaceTextView">
        <attr name="customTypeface" format="string" />
    </declare-styleable>

</resources>

答案 1 :(得分:0)

如果你想让他们都使用同一个,请在xml中使用android:typeface。如果您希望它们使用不同的,请在getView函数的TextView上设置它。

答案 2 :(得分:0)

默认不是Arial。默认为Droid Sans。

更改为其他内置字体

其次,要更改为不同的内置字体,请在布局XML中使用android:typeface或在Java(android)中使用setTypeface()。

示例

Typeface tf = Typeface.createFromAsset(getAssets(),
        "fonts/Arial.otf");
TextView tv = (TextView) findViewById(R.id.CustomFontText);
tv.setTypeface(tf)