我已经将 HorizontalScrollView 子类化,以便我可以有一些自定义滚动行为,但发现 smoothScrollTo 并不总是触发。我不得不使用以下代码解决这个问题:
smoothScrollTo(x, y);
scrollTo(x, y);
即使 smoothScrollTo 不起作用,这也可以确保滚动实际完成,因为 scrollTo 每次都有效。为什么会这样?我怎样才能让 smoothScrollTo 每次都能工作?
我已经将 HorizontalScrollView 子类化,以便我可以有一些自定义滚动行为,但发现 smoothScrollTo 并不总是触发。我不得不使用以下代码解决这个问题:
smoothScrollTo(x, y);
scrollTo(x, y);
即使 smoothScrollTo 不起作用,这也可以确保滚动实际完成,因为 scrollTo 每次都有效。为什么会这样?我怎样才能让 smoothScrollTo 每次都能工作?
尝试这个:
mScrollView.post(new Runnable() {
@Override
public void run() {
mScrollView.smoothScrollTo(x, y);
}
});
以下代码将起作用:
final int scrollposition = Math.round(hr/24.0f * 1440f);
final ScrollView sv = (ScrollView)findViewById(R.id.graphScrollView);
//sv.smoothScrollTo(0, scrollposition);
sv.post(new Runnable() {
@Override
public void run() {
sv.smoothScrollTo(0, scrollposition);
}
});
原因: 在运行底层代码之前,它会等待滚动视图发布。