Je veux dessiner un texte sur une peinture. Comment le dessiner avec une police personnalisée ( ex Helvetica ) et en gras également? Je préférerais utiliser une police système et ne pas la créer à partir d'actifs. Merci.
Je veux dessiner un texte sur une peinture. Comment le dessiner avec une police personnalisée ( ex Helvetica ) et en gras également? Je préférerais utiliser une police système et ne pas la créer à partir d'actifs. Merci.
Réponses:
Si par "police personnalisée" vous entendez 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);
Typeface plain = Typeface.createFromAsset(assetManager, pathToFont); Typeface bold = Typeface.create(plain, Typeface.DEFAULT_BOLD)
.
getContext().getAssets()
?
Typeface.DEFAULT_BOLD
m'a également posé des problèmes, mais je suis passé au Typeface.BOLD
travail
Si vous utilisez les nouvelles polices d'Android en XML pour vos polices, vous pouvez utiliser pour obtenir la police utilisée pour la peinture:
val customTypeface = ResourcesCompat.getFont(context, R.font.myfont)
ou si votre API Android minimale> = 26
val customTypeface = resources.getFont(R.font.myfont)
Ensuite, pour l'appliquer sur votre objet peinture:
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 avez déjà une police en cours d'utilisation et que vous souhaitez en 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 j'ai simplement pensé que je la mentionnerais
Si vous souhaitez utiliser une police à partir 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 besoin aussi.
Canvas
?