文字可以像这样加下划线
myPaint.setUnderlineText(true);
有没有办法以像素为单位获得下划线的粗细?
我浏览了Paint
源代码,但我没有看到任何内容。
备注
TextPaint
隐藏的underlineThickness
属性。即使我通过反射访问它,它只是一个乘数,而不是实际的厚度。(bottom - top) / 16
似乎很接近)。这个答案说明了
textBottom = top + textSize
underlineHeight = bottom - textBottom
我使用another answer对其进行了测试,并略微修改the app以在文本下方添加下划线以用于视觉目的。 (为此我使用了mTextPaint.setUnderlineText(true);
)
红线是FontMetrics top
,baseline
和bottom
。舍入到最接近的int
我们得到
top = -211
bottom = 54
textSize = 200
使用Nikola Despotoski的答案,这将给出
textBottom = (-211) + (200) = -11
underlineHeight = (54) - (-11) = 65
由于65
大于从基线到底部的整个距离,因此它比实际下划线厚得多。因此,除非我误解答案,否则似乎是错误的。