Android 自定义视图-圆周上的数字和字母

Android 自定义视图-圆周上的数字和字母,android,android-custom-view,Android,Android Custom View,有人能向我解释一下这种行为的原因吗 问题是,从“off”到“2”总是完美地显示在我给出的半径之上。 半径比圆的半径大+35 现在当我写数字的时候,当它往下写的时候,它开始乱了 就字母表而言,它接触边缘并重叠 有谁能告诉我原因吗?因为半径总是大于当前圆的半径,所以字母应该类似地显示为“off” xy点的计算 // Angles are in radians. val startAngle = Math.PI * (9 / 8.0) val angle = startAngle

有人能向我解释一下这种行为的原因吗

问题是,从“off”到“2”总是完美地显示在我给出的半径之上。 半径比圆的半径大+35

现在当我写数字的时候,当它往下写的时候,它开始乱了

就字母表而言,它接触边缘并重叠

有谁能告诉我原因吗?因为半径总是大于当前圆的半径,所以字母应该类似地显示为“off”

xy点的计算

// Angles are in radians.
   val startAngle = Math.PI * (9 / 8.0)   
   val angle = startAngle + pos.ordinal * (Math.PI / 4)
   x = (radius * cos(angle)).toFloat() + width / 2
   y = (radius * sin(angle)).toFloat() + height / 2
我用度数玩了一下,似乎接近0度的地方开始乱了,随着度数的增加,它在半径上不断增加更多的空间


如图所示。。。我想知道是什么导致了这种行为,或者只是解释其背后的原因/数学。感谢您的评论,您似乎正在遵循此代码实验室代码

你只需要考虑文本的上升和体面。在圆周上画出数字

val yPos = (pointPosition.y - (paint.descent() + paint.ascent()) / 2).toInt() 
canvas.drawText(label, pointPosition.x, yPos.toFloat(), paint)
以上是基于

这确实会在正确的位置绘制文本,但如果文本太大,则会重叠


代码没有问题,观察到的行为是由于父视图对子视图施加的约束造成的。为了清楚地注意到该行为,请在自定义视图中添加背景色,并将文本
off
更改为类似
offffff
,即现在的文本overlaps@rcs好吧,我换了,是的,它确实重叠,但问题仍然是为什么数字文本“5”也重叠?它不应该这样做,因为半径总是大于圆,所以它应该在设置的半径处开始文本。如果有帮助,请尝试以下方法
val yPos=(pointPosition.y-(paint.descent()+paint.ascent())/2).toInt()canvas.drawText(label,pointPosition.x,yPos.toFloat(),paint)
。我猜您是在尝试来自的代码。最后是艾斯。对于较大的文本,它是这样的overlap@apprajapati以下是你为什么需要向Ascend和Delegate发送短信的详细信息