前言:
当我们在使用ScrollView的时候,当前页面超出Scrollview显示页面需要自动滚动到底部时,发现不能完全滚动到底部。这是因为Android下很多函数都是基于消息的,用消息队列来保证同步,所以函数条用多数是异步操作的。当给ScrollView嵌套的布局设置内容时,不会马上显示出来,而是将内容添加到消息队列之后立刻返回,当ScrollView滚动时,添加的内容可能还没显示出来,自然无法滚动到正确的位置。这里给出2种常用的方式:
一、调用post方法
mScrollview.post(new Runnable() {
public void run() {
mScrollview.fullScroll(View.FOCUS_DOWN);
}
});
优点:代码简单。
缺点:当同时添加多个内容时,会出现不能滚动到底部。
二、调用addOnGlobalLayoutListener方法
mScrollview.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
mScrollview.post(new Runnable() {
public void run() {
mScrollview.fullScroll(View.FOCUS_DOWN);
}
});
}
});
优点:当同时添加多个内容时,可以滚动到底部。
缺点:代码稍多。