更新画布上的绘图以具有水平填充

问题描述 投票:0回答:1

我有这样的逻辑在画布上绘制数字时间。它工作正常,但文本在边缘切割。我如何更新它以使文本位于中间并具有水平填充,这将对任何屏幕尺寸做出反应。

private fun drawDigitalClock(canvas: Canvas,context: Context) {
    paint = Paint()
    val formatService = FormatService.getInstance(context)
    val timeText = formatService.formatTime(time)
    paint.textSize = fontSize.toFloat() * 4.5f
    paint.color = Color.WHITE
    paint.textAlign = Paint.Align.CENTER
    canvas.drawText(timeText, width / 2f, height / 2f, paint)
}

android kotlin canvas
1个回答
0
投票
private fun drawDigitalClock(canvas: Canvas,context: Context) {
    paint = Paint()
    val formatService = FormatService.getInstance(context)
    val timeText = formatService.formatTime(time)
    paint.textSize = fontSize.toFloat() * 4.5f
    paint.color = Color.WHITE
    paint.textAlign = Paint.Align.CENTER
    
    //Adjust textWidth to fit 
    val textWidth = paint.measureText(timeText) 
    val adjustedTextSize = paint.textSize * (width - totalPadding)/ textWidth 
    paint.textSize = adjustedTextSize 
    
    canvas.drawText(timeText, width / 2f, height / 2f, paint)
}

© www.soinside.com 2019 - 2024. All rights reserved.