Leider können Sie die Schriftart aller TextViews, die Sie in Ihrer App verwenden, nicht direkt ändern, indem Sie nur die Standardschrift ändern.
Was Sie tun können, ist Ihre eigenen benutzerdefinierten TextView erstellen und Schriftart, wie von #josedlujan vorgeschlagen. Aber der Fehler bei diesem Ansatz ist, dass jedes Mal, wenn ein TextView-Objekt erstellt wird, ein neues Typeface-Objekt erstellt wird, das extrem schlecht für die RAM-Nutzung ist (Ein Typeface-Objekt variiert typischerweise von 8-13 kb für Schriften wie Roboto). Es ist also besser, den Typeface nach dem Laden zwischenzuspeichern.
Schritt 1: Schriftart-Cache für Ihre Anwendung erstellen -
public enum Font {
// path to your font asset
Y("fonts/Roboto-Regular.ttf");
public final String name;
private Typeface typeface;
Font(String s) {
name = s;
}
public Typeface getTypeface(Context context) {
if (typeface != null) return typeface;
try {
return typeface = Typeface.createFromAsset(context.getAssets(), name);
} catch (Exception e) {
return null;
}
}
public static Font fromName(String fontName) {
return Font.valueOf(fontName.toUpperCase());
}
Schritt 2: Definieren Sie Ihr eigenes benutzerdefiniertes Attribut "customFont" in attrs.xml für Ihre CustomTextView
attrs.xml -
<declare-styleable name="CustomFontTextView">
<attr name="customFont"/>
</declare-styleable>
<com.packagename.CustomFontTextView
android:id="@+id/some_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:customFont="rl"/>
Schritt 3: Erstellen Sie Ihre eigene benutzerdefinierte TextView
public class CustomFontTextView extends TextView {
public CustomFontTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init(context, attrs);
}
public CustomFontTextView(Context context, AttributeSet attrs) {
super(context, attrs);
init(context, attrs);
}
public CustomFontTextView(Context context) {
super(context);
init(context, null);
}
private void init(Context context, AttributeSet attrs) {
if (attrs == null) {
return;
}
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CustomFontTextView, 0 ,0);
String fontName = a.getString(R.styleable.CustomFontTextView_customFont);
String textStyle = attrs.getAttributeValue(styleScheme, styleAttribute);
if (fontName != null) {
Typeface typeface = Font.fromName(fontName).getTypeface(context);
if (textStyle != null) {
int style = Integer.decode(textStyle);
setTypeface(typeface, style);
} else {
setTypeface(typeface);
}
}
a.recycle();
}