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.
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);
Utilisez ceci pour la classe Paint:
Paint paint = new Paint();
Paint.setTypeface(Typeface.create("Arial",Typeface.ITALIC));
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
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
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.