Quiero dibujar un texto en una pintura. ¿Cómo dibujarlo con una fuente personalizada ( ex Helvetica ) y también en negrita? Preferiría usar una fuente del sistema y no crearla a partir de activos. Gracias.
Quiero dibujar un texto en una pintura. ¿Cómo dibujarlo con una fuente personalizada ( ex Helvetica ) y también en negrita? Preferiría usar una fuente del sistema y no crearla a partir de activos. Gracias.
Respuestas:
Si por "fuente personalizada" te refieres a una fuente que estás proporcionando como activo, el siguiente código debería funcionar:
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
también me dio problemas, pero el cambio a Typeface.BOLD
funcionó
Si está utilizando las nuevas fuentes de Android en XML para sus fuentes, para obtener el tipo de letra utilizado para la pintura, puede usar:
val customTypeface = ResourcesCompat.getFont(context, R.font.myfont)
o si su API de Android mínima> = 26
val customTypeface = resources.getFont(R.font.myfont)
Luego, para aplicarlo a su objeto de pintura:
mTextPaint.typeface = customTypeface
Para obtener más información, consulte https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml#fonts-in-code
Si ya tiene una fuente en uso y desea usar una versión en negrita, puede hacerlo.
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);
Usé la respuesta anterior, pero esta modificación era necesaria para mí, así que pensé en mencionarla
Si desea utilizar una fuente de recursos (Kotlin):
val textPaint = TextPaint()
textPaint.typeface = resources.getFont(R.font.font_name)
Puede que esto no esté relacionado con la pregunta, pero esto es lo que estaba buscando, tal vez alguien también lo necesitaría.
Canvas
?