Comment puis-je utiliser une police personnalisée qui a été ajoutée dans le dossier des ressources de mon xml? Je sais que nous pouvons utiliser la méthode setTypeface()
en Java, mais nous devons le faire partout où nous utilisons cette TextView
. Alors, y a-t-il une meilleure façon?
La meilleure façon que j'ai trouvée en recherchant sur Google est de dire si vous voulez utiliser TextView, nous devons étendre Textview et définir la police pour que plus tard nous puissions utiliser notre Textview personnalisé dans notre xml. Je vais montrer le TextView étendu ci-dessous
package com.vins.test;
import Android.content.Context;
import Android.graphics.Typeface;
import Android.util.AttributeSet;
import Android.widget.TextView;
public class MyTextView extends TextView {
public MyTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
public MyTextView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public MyTextView(Context context) {
super(context);
init();
}
private void init() {
Typeface tf = Typeface.createFromAsset(getContext().getAssets(),
"your_font.ttf");
setTypeface(tf);
}
}
Nous appelons init () pour définir la police dans chacun des costructors. Plus tard, nous devons l'utiliser dans notre main.xml comme indiqué ci-dessous.
<com.vins.test.MyTextView
Android:id="@+id/txt"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:gravity="center"
Android:layout_weight="1"
Android:text="This is a text view with the font u had set in MyTextView class "
Android:textSize="30dip"
Android:textColor="#ff0000"
>
Mise à jour:
Soyez conscient de la fuite de mémoire dans la version antérieure à 4.0 Android comme mentionné par pandre.
Mettez votre fichier de police dans asset\fonts\fontname
Définissez trois textview dans votre fichier xml puis mettez ce code dans votre classe d'activité:
public class AndroidExternalFontsActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Font path
String fontPath = "fonts/DS-DIGIT.TTF";
String fontPath1 = "fonts/Face Your Fears.ttf";
String fontPath2 = "fonts/HelveticaNeue-Bold_0.otf";
// text view label
TextView txtGhost = (TextView) findViewById(R.id.ghost);
TextView txtGhost1 = (TextView) findViewById(R.id.ghost1);
TextView txtGhost2 = (TextView) findViewById(R.id.ghost2);
// Loading Font Face
Typeface tf = Typeface.createFromAsset(getAssets(), fontPath);
Typeface tf1 = Typeface.createFromAsset(getAssets(), fontPath1);
Typeface tf2 = Typeface.createFromAsset(getAssets(), fontPath2);
// Applying font
txtGhost.setTypeface(tf);
txtGhost1.setTypeface(tf1);
txtGhost2.setTypeface(tf2);
}
}