文章目录
- 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论坛,遇到问题,还是得去国外论坛找答案靠谱。