web-dev-qa-db-fra.com

android définir la police personnalisée à une peinture

Je veux dessiner un texte sur une peinture. Comment le dessiner avec une police personnalisée (ex Helvetica) et en gras aussi? Je préférerais utiliser une police système et ne pas la créer à partir d'actifs. Merci.

82
Buda Gavril

Si vous entendez par "police personnalisée" une police que vous fournissez en tant qu'actif, le code suivant devrait fonctionner:

Typeface plain = Typeface.createFromAsset(assetManager, pathToFont); 
Typeface bold = Typeface.create(plain, Typeface.DEFAULT_BOLD)
Paint paint = new Paint();
Paint.setTypeface(bold);
canvas.drawText("Sample text in bold",0,0,Paint);
155
Tony the Pony

Utilisez ceci pour la classe Paint:

 Paint paint = new Paint();
   Paint.setTypeface(Typeface.create("Arial",Typeface.ITALIC));
14
Pritam

Si vous avez déjà une police en cours d'utilisation et que vous souhaitez utiliser une version en gras, vous pouvez le faire.

currentPainter = new Paint(Paint.ANTI_ALIAS_FLAG);
currentPainter.setColor(Color.WHITE);
currentPainter.setTextSize(Utils.sp2px(getResources(), 14)); // set font size
Typeface currentTypeFace =   currentPainter.getTypeface();
Typeface bold = Typeface.create(currentTypeFace, Typeface.BOLD);
currentPainter.setTypeface(bold);

J'ai utilisé la réponse ci-dessus, mais cette modification était nécessaire pour moi - alors je pensais juste que je le mentionnerais

7
Neil D'Souza

Si vous utilisez les nouvelles polices XML dans Android pour vos polices, vous pouvez utiliser la police de caractères utilisée pour Paint:

val customTypeface = ResourcesCompat.getFont(context, R.font.myfont)

ou si votre min Android API> = 26

val customTypeface = resources.getFont(R.font.myfont)

Ensuite, pour l'appliquer à votre objet Paint:

mTextPaint.typeface = customTypeface

Pour plus d'informations, consultez https://developer.Android.com/guide/topics/ui/look-and-feel/fonts-in-xml#fonts-in-code

4
Sebastian Helzer

Si vous souhaitez utiliser une police de ressources (Kotlin):

val textPaint = TextPaint()
textPaint.typeface = resources.getFont(R.font.font_name)

Cela n’est peut-être pas lié à la question, mais c’est ce que je cherchais - peut-être que quelqu'un en aurait aussi besoin.

1
Paweł Rubin