将字体更改为android项目的最简单,最快捷的方法是什么,我希望避免更改每个视图。
答案 0 :(得分:1)
通过使用此库,您无需更改每个视图,只需创建自定义Activity
类并覆盖此方法:
@Override
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));
}
然后使用此活动扩展您的所有活动。
答案 1 :(得分:0)
您可以为所有视图制作自定义视图。
例如。 for TextView:
public class MyTextView extends TextView {
private Typeface typeface;
public MyTextView(Context context) {
super(context);
}
public MyTextView(Context context, AttributeSet attrs) {
super(context, attrs);
setCustomFont(context, attrs);
}
public MyTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setCustomFont(context, attrs);
}
private void setCustomFont(Context ctx, AttributeSet attrs) {
TypedArray a = ctx.obtainStyledAttributes(attrs, R.styleable.app);
String customFont = a.getString(R.styleable.app_customFont);
setCustomFont(ctx, customFont);
a.recycle();
}
private boolean setCustomFont(Context ctx, String asset) {
try {
if (typeface == null) {
typeface = Typeface.createFromAsset(ctx.getAssets(),
getResources().getString(R.string.app_font1));
}
} catch (Exception e) {
e.printStackTrace();
return false;
}
setTypeface(typeface);
return true;
}
}
在String.xml中
添加此标记 -
<string name="app_font1">fonts/Roboto-Regular.ttf</string>
在XML文件中:
<PackageName.MyTextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center"
android:text="Hello" />