文章目录
1. 问题提出2.无法精准定位的产生原因3. 解决方案1. 问题提出
在使用TextView垂直滚动添加内容,并自动定位到最后一行时,往往会出现TextView没有办法精准定位的情况,并且随着内容的增加,定位根本就不对。经过多方查找资料,终于解决现将方法记录如下
2.无法精准定位的产生原因
在测试中,我们发现TextView getLineCount()*getLineHeight() != getHeight()
,因此如果我们按照网上大多数教程的写法
int offset = textView.getLineCount() * textView.getLineHeight();if (offset > textView.getHeight()) {textView.scrollTo(0, offset - textView.getHeight());}
这样的话,TextView的内容每增加一行,定位就越不精准。
3. 解决方案
知道了问题所在,我们只需要获取TextView的真实高度即可,如下面的写法:
private int getTextViewHeight(TextView view) {Layout layout = view.getLayout();int desired = layout.getLineTop(view.getLineCount());int padding = view.getCompoundPaddingTop() + view.getCompoundPaddingBottom();return desired + padding;}
然后这样调用
int offset = getTextViewHeight(textView);if (offset > textView.getHeight()) {textView.scrollTo(0, offset - textView.getHeight());}
以上解决方案,来源于:stackoverflow论坛,遇到问题,还是得去国外论坛找答案靠谱。