前言:
當(dāng)我們在使用ScrollView的時候房匆,當(dāng)前頁面超出Scrollview顯示頁面需要自動滾動到底部時,發(fā)現(xiàn)不能完全滾動到底部报亩。這是因為Android下很多函數(shù)都是基于消息的浴鸿,用消息隊列來保證同步,所以函數(shù)條用多數(shù)是異步操作的弦追。當(dāng)給ScrollView嵌套的布局設(shè)置內(nèi)容時岳链,不會馬上顯示出來,而是將內(nèi)容添加到消息隊列之后立刻返回骗卜,當(dāng)ScrollView滾動時宠页,添加的內(nèi)容可能還沒顯示出來,自然無法滾動到正確的位置寇仓。這里給出2種常用的方式:
一举户、調(diào)用post方法
mScrollview.post(new Runnable() {
public void run() {
mScrollview.fullScroll(View.FOCUS_DOWN);
}
});
優(yōu)點:代碼簡單。
缺點:當(dāng)同時添加多個內(nèi)容時遍烦,會出現(xiàn)不能滾動到底部俭嘁。
二、調(diào)用addOnGlobalLayoutListener方法
mScrollview.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
mScrollview.post(new Runnable() {
public void run() {
mScrollview.fullScroll(View.FOCUS_DOWN);
}
});
}
});
優(yōu)點:當(dāng)同時添加多個內(nèi)容時服猪,可以滾動到底部供填。
缺點:代碼稍多。