和这个问题相同:ScrollView .scrollTo不起作用?如何在旋转后保存ScrollView的位置
我在onCreate中动态向scrollView添加了项目,所有项目都添加完成后,我尝试执行以下操作:
// no effect
ScrollView mainScroll = (ScrollView) findViewById(R.id.average_scroll_mainScroll);
// no effect
ScrollView mainScroll = (ScrollView) findViewById(R.id.average_scroll_mainScroll);
mainScroll.post(new Runnable() {
public void run(){
ScrollView mainScroll = (ScrollView) findViewById(R.id.average_scroll_mainScroll);
mainScroll.scrollTo(0, 0);
}
});
// works like a charm
ScrollView mainScroll = (ScrollView) findViewById(R.id.average_scroll_mainScroll);
mainScroll.postDelayed(new Runnable() {
public void run(){
ScrollView mainScroll = (ScrollView) findViewById(R.id.average_scroll_mainScroll);
mainScroll.scrollTo(0, 0);
}
}, 30);
我认为有类似于“DOM-ready”的事件吗?是否有任何回调函数?
ScrollView
还没有被布局或测量,所以第一种方法不起作用。通过添加延迟,您可以给视图层次结构足够的时间来初始化。我建议尝试将OnGlobalLayoutListener
附加到ScrollView
的ViewTreeObserver
上,以便在视图“准备好滚动”时得到通知。 - MH.