我试图获得给定文本行的确切Y位置。我以为我会用i * TextView.getLineHeight()
来获得第i行的Y位置,但这看起来并不正确。
我认为这是错误的原因是因为我认为TextView.getLineHeight() * TextView.getLineCount() != TextView.getHeight()
是由于同样的错误。行间距和行乘数都是此TextView的默认值。
在TextView中获取第i行的y位置的正确方法是什么?
编辑---
即使TextView.getLayout().getLineTop(i)
似乎也不正确,但请告诉我,我是否忽略了某些事情
答案 0 :(得分:0)
private int getTextViewHeight(TextView textView) {
Layout layout = textView.getLayout();
int desired = layout.getLineTop(textView.getLineCount());
int padding = textView.getCompoundPaddingTop() +
textView.getCompoundPaddingBottom();
return desired + padding;
}
这段代码是有帮助的。阅读TextView SourceCode(关于onMeasure)你可以知道它是如何工作的。