之前一直纠结一个问题就是通过代码往ScrollView加入一些需要显示的view,通过addView来加入view,由于addView是通过队列消息的模式加入的,如果仅仅在之后加入
scrollview.fullScroll(View.FOCUS_DOWN),无法达到效果。
而使用 scrollview.post(new Runnable() {
public void run() {
scrollview.fullScroll(View.FOCUS_DOWN);
}
});
也不行,当add的view非常多时,只会滑动到中间,而delay一些时间,虽然效果好一点,但是还是没有完全解决,最后找到一个比较好的解决办法,就是使用下面的代码即可
scrollview.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
scrollview.post(new Runnable() {
public void run() {
scrollview.fullScroll(View.FOCUS_DOWN);
}
});
}
});