第 1 步:
创建 assets 文件夹并在此文件夹中创建另一个文件夹 fonts 见下图。创建这些文件夹后,将您的 ttf 文件粘贴到字体文件夹中。
第 2 步: 在 values 文件夹中创建 attrs.xml 文件,见下图并粘贴此代码。
代码
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="CustomTextView">
<attr name="font" format="string" />
</declare-styleable>
</resources>
第 3 步:
创建CustomTextview.class并粘贴这段代码
import android.annotation.TargetApi;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Typeface;
import android.os.Build;
import android.util.AttributeSet;
import android.widget.TextView;
public class CustomTextView extends TextView {
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public CustomTextView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
init(attrs);
}
public CustomTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init(attrs);
}
public CustomTextView(Context context, AttributeSet attrs) {
super(context, attrs);
init(attrs);
}
public CustomTextView(Context context) {
super(context);
init(null);
}
private void init(AttributeSet attrs) {
if (attrs != null) {
TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.CustomTextView);
String fontName = a.getString(R.styleable.CustomTextView_font);
try {
if (fontName != null) {
Typeface myTypeface = Typeface.createFromAsset(getContext().getAssets(), "fonts/" + fontName);
setTypeface(myTypeface);
}
} catch (Exception e) {
e.printStackTrace();
}
a.recycle();
}
}
}
第 4 步:
在 xml 文件中声明您的 customTextview,如下所示。
使用这个属性app:font="your ttf file"
注意->com.javacodegeeks.androidcustomfontexample.CustomTextView注明你的包名和类名。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
android:padding="20dp">
<com.javacodegeeks.androidcustomfontexample.CustomTextView
android:id="@+id/custom_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="This is a custom text view!"
android:textSize="30dp"
app:font="arial.ttf" />
</LinearLayout>
您可以从HERE获取演示
希望对你有帮助