我需要为listview项添加自定义字体。我已经使用像这样的
这样的适配器将值添加到列表中SimpleAdapter adapter = new SimpleAdapter(getBaseContext(), newList, R.layout.club_list2, from, to);
这里我想为club_list2布局中的textviews设置字体。这怎么可能?
答案 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)