J'ai déjà lu quelques articles et recherché sur Google, mais je ne l'ai pas fait.
Mon problème concerne la police.
Sous Android, il n'y a que 4 attributs dans "Android:typeface"
: Normal, Sans, Serif, Monospace.
Alors, que dois-je faire pour utiliser "Verdana" dans mon application?
Veuillez me suggérer une manière correcte d'utiliser cette police dans mon Android.
Ceci est un exemple simple ... créez un dossier à la racine de votre projet appelé assets/fonts/
puis collez le fichier de police TTF (dans ce cas Verdana.ttf). Ensuite, si vous souhaitez appliquer cette police, par exemple un TextView
, procédez comme suit:
import Android.graphics.Typeface;
public class FontSampler extends Activity {
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
TextView tv=(TextView)findViewById(R.id.custom);
Typeface face=Typeface.createFromAsset(getAssets(),
"fonts/Verdana.ttf");
tv.setTypeface(face);
}
}
Cet exemple est tiré du livre ComonsWare (écrit par Mark Murphy). Vous pouvez télécharger l'exemple complet depuis GitHub .
Vous pouvez utiliser PixlUI à https://github.com/neopixl/PixlUI
importer leur .jar et l'utiliser en XML
<com.neopixl.pixlui.components.textview.TextView
Android:id="@+id/textView1"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="@string/hello_world"
pixlui:typeface="GearedSlab.ttf" />
Bien!!
Cette question est assez ancienne mais toujours si quelqu'un cherche la réponse (en 2015) sur la façon d'appliquer la police personnalisée à tous les Textviews via le code xml directement voir ci-dessous:
Premier:
nous devons ajouter une police personnalisée dans le dossier des ressources dans le répertoire de votre application:
. ttf ou . otf fonctionnent tous les deux dans le cas d'Android
Deuxième:
Créez la classe CustomTextView qui étend TextView comme ci-dessous:
public class CustomTextView extends TextView {
public CustomTextView(Context context) {
super(context);
}
public CustomTextView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public CustomTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public void setTypeface(Typeface tf) {
super.setTypeface(FontCache.getFont(getContext(),"fonts/<font_name>"));
}
}
Troisième:
Classe FontCache utilisée dans la méthode setTypeface () de CustomTextView. Le but est de faire une mise en cache de police de base à l'aide de HashMap:
public class FontCache {
private static Map<String,Typeface> fontMap = new HashMap<String,Typeface>();
public static Typeface getFont(Context context,String fontname){
if(fontMap.containsKey(fontname)){
return fontMap.get(fontname);
}
else{
Typeface tf = Typeface.createFromAsset(context.getAssets(),fontname);
fontMap.put(fontname,tf);
return tf;
}
}
}
Quatrième: [Étape finale] Tout ce que nous faisons maintenant est d'utiliser le CustomTextView directement à l'intérieur de notre fichier xml partout où une police de texte personnalisée est requise:
<<package_name>.CustomTextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="Custom Font Text"
Android:textSize ="18sp"
Android:textAppearance="?android:textAppearanceSmall"
Android:id="@+id/custom_txt"
/>
Désolé, si cela a déjà été publié quelque part sur SO. J'ai juste pensé à partager si ça aide quelqu'un !!
Vous pouvez utiliser simple EasyFonts bibliothèque tierce pour définir une variété de polices personnalisées sur votre TextView
. En utilisant cette bibliothèque, vous ne devriez pas avoir à vous soucier du téléchargement et de l'ajout de polices dans le dossier assets/fonts. Également à propos de la création d'objets Typeface.
Cette bibliothèque ne fournit pas de visage de police Verdana.
Mais fournissez les faces de police suivantes. Que souhaiteriez-vous utiliser?.
Simplement:
TextView myTextView = (TextView)findViewById(R.id.myTextView);
myTextView.setTypeface(EasyFonts.robotoThin(this));
Je suis l'auteur de cette bibliothèque.
Pour changer la police (personnalisée) de votre application globalement, jetez un œil à Calligraphy
Ajoutez simplement la calligraphie à votre gradle.build et ajoutez l'extrait suivant à votre Application.onCreate()
:
CalligraphyConfig.initDefault(new CalligraphyConfig.Builder()
.setDefaultFontPath("fonts/MyCustomFont.ttf")
.setFontAttrId(R.attr.fontPath)
.build()
);
et dans chaque activité, ajoutez ce qui suit:
@Override
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));
}
C'est tout ce que vous devez faire pour changer la police de manière globale dans votre application. Jetez un œil aux documents pour plus de détails.
// My example show you how to change fonts into a normal textView or list view
create a fonts folder into your assets dir of Android and copy your custom font in that ..
assets/fonts/monaco.ttf
// Font path
String fontPath = "fonts/monaco.ttf";
// Loading Font Face
Typeface tf = Typeface.createFromAsset(getAssets(), fontPath);
// CASE 1 : Inside your list view
holder.name = (TextView) convertView
.findViewById(R.id.textView_cityName);
// set name of text in each row
holder.name.setText(CitiesNames.get(position));
// set the type of font you want to set
holder.name.setTypeface(tf);
// CASE 2 : Inside your text view
TextView tx = (TextView)findViewById(R.id.textview1);
tx.setTypeface(tf);
//vKj