Necesito dibujar texto en Canvas en Compose, para este propósito necesito un TextPaint con android.graphics.Typeface .
¿Hay alguna forma de convertir fácilmente Compose TextStyle en android.graphics.Typeface ?
Actualmente, la única solución que encontré es proporcionar recursos:
val textTypeface: android.graphics.Typeface? = if (Build.VERSION.SDK_INT > Build.VERSION_CODES.O) LocalContext.current.resources.getFont(R.font.quicksand_light) else nullSin embargo, si la versión de Android <Android Oreo, no sé cómo proporcionar la fuente, así que recurro a la fuente predeterminada.
Para dibujar texto en el lienzo, puedes hacer esto
@Composable fun DrawText() { val paint = Paint().asFrameworkPaint() Canvas(modifier = Modifier.fillMaxSize()) { paint.apply { isAntiAlias = true textSize = 24f typeface = Typeface.create(Typeface.DEFAULT, Typeface.BOLD) // your typeface //other methods like color, dither, fontMetrics, shadow etc...are also available } drawIntoCanvas { it.nativeCanvas.drawText("Hello World", size.width/2, size.height/2, paint) } } } Creo que convertir TextStyle (biblioteca de redacción) a tipo de typeface será una molestia ya que no hay soporte de Android. Si desea dibujar texto en lienzo, creo que esto será suficiente
prueba esto
val textPaint = TextPaint() val context = LocalContext.current Canvas(modifier = Modifier.fillMaxWidth()) { textPaint.apply { typeface = Typeface.createFromAsset(context.assets, "fonts/yourfont.ttf") ... } drawContext.canvas.nativeCanvas.drawText("test", yourStart, yourEnd, X, Y, textPaint) }