Malheureusement, il n'y a aucun moyen direct de changer la police de caractères de tous les TextViews que vous utilisez dans votre application en modifiant simplement la police par défaut.
Ce que vous pouvez faire est de créer votre propre TextView personnalisé et de définir la typographie comme suggéré par #josedlujan. Mais la faille de cette approche est que chaque fois qu'un objet TextView sera créé, un nouvel objet Typeface sera créé, ce qui est extrêmement mauvais pour l'utilisation de la RAM (Un objet Typeface varie typiquement de 8-13 kb pour les polices comme Roboto). Il est donc préférable de mettre en cache votre police dès qu'elle est chargée.
Etape 1: Création d'un cache de Typeface pour votre application -
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());
}
Étape 2: Définissez votre propre attribut personnalisé "customFont" dans attrs.xml pour votre 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"/>
Étape 3: Créez votre propre TextView personnalisé
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();
}