TextView getLineCount()* getLineHeight()!= getHeight()

时间:2015-12-13 05:31:37

标签: android textview

我试图获得给定文本行的确切Y位置。我以为我会用i * TextView.getLineHeight()来获得第i行的Y位置,但这看起来并不正确。

我认为这是错误的原因是因为我认为TextView.getLineHeight() * TextView.getLineCount() != TextView.getHeight()是由于同样的错误。行间距和行乘数都是此TextView的默认值。

在TextView中获取第i行的y位置的正确方法是什么?

编辑---

即使TextView.getLayout().getLineTop(i)似乎也不正确,但请告诉我,我是否忽略了某些事情

1 个答案:

答案 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)你可以知道它是如何工作的。