2010-11-02 21 views
12

Je suis en train de dessiner un texte sur la toile comme celui-ci (un peu pseudocode ci-dessous):Comment dessiner avec une police Android par défaut sur un canevas?

Paint p = new Paint(ANTI_ALIAS_FLAG); 
p.setTextSize(18); 
... 
mCanvas.drawText("Hello StackOverflow!", 50, 50, p); 

Mon problème est que le résultat ressemble vraiment « bizarre ». Il utilise une police de caractères gras, qui est mal aliasé, ne semble pas jolie et "carré". J'ai essayé de jouer avec p.setTextSize(), en définissant différentes tailles, j'ai aussi essayé de définir différentes polices de caractères par défaut en utilisant p.setTypeface (Typeface) et en réglant DEFAULT, NORMAL, SERIF, SANS_SERIF etc, mais a l'air moche. Au contraire, la police utilisée dans le reste du système est vraiment belle, et j'aimerais l'utiliser.

Comment? :)

+0

Il serait utile que vous ajoutiez une capture d'écran pour voir quel est réellement le problème. – blessenm

Répondre

15

Cela alias à la police correctement:

p.setAntiAlias(true); 

Si vous voulez changer la police elle-même, utilisez

p.setTypeface(yourTypeface); 

avec un objet Typeface personnalisé.

(jetez un oeil à http://developer.android.com/reference/android/graphics/Typeface.html)

Vous pouvez utiliser

Typeface.defaultFromStyle(int style); 

avec l'un des styles de texte ici: http://developer.android.com/reference/android/R.style.html#TextAppearance.

Il devrait vous donner le style de police système par défaut, si c'est ce que vous recherchez.

+4

-1: 'Typeface.defaultFromStyle (int style);' s'attend à recevoir les styles comme 'Typeface.BOLD', pas les styles de' android.R.style'. – Malcolm

+1

Détail important en effet. L'utilisation d'une valeur de android.R.style entraîne une exception 'ArrayIndexOutOfBoundsException'. – Mavamaarten