使用Canvas为文本视图提供圆形背景



我想在画布上绘制一个带有圆角边框的textView。所以下面的代码运行良好。但是圆需要15.0f才能从yPosCenter 中减去

如何正确地为textView提供圆形背景在画布中完美查看。在我的情况下,我必须使用硬代码图15.0f

val verticalOffset = dayVerticalOffsets[day.indexOnMonthView]
val xPos = x * dayWidth + horizontalOffset
val yPos = y * dayHeight + verticalOffset
val xPosCenter = xPos + dayWidth / 2
val yPosCenter = yPos + dayHeight / 2

//subtract 15.0f to adjust it to center - > How could I achieve it 
//val subtractVal = yPosCenter - (paint.descent() + paint.ascent())// / 2
canvas.drawCircle(xPosCenter,yPosCenter - 15.0f,paint.textSize * 0.85f , getCounterColor(day))
canvas.drawText("15",xPosCenter,yPosCenter,getTextPaint(day))

我错过了什么。

我认为您所缺少的只是文本不会以yPosCenter:为垂直中心绘制

// Outside draw function
private val textBounds = Rect()
...
val text = "15"
// Find the center of the text vertically
val textVerticalCenter = paint.getTextBounds(text, 0, text.length(), textBounds).exactCenterY()
canvas.drawText(text, xPosCenter, yPosCenter - textVerticalCenter, paint)

最新更新