【发布时间】:2015-10-12 05:01:21
【问题描述】:
如何在滚动视图显示之前将其滚动设置为 x 像素?
在 ScrollView 我有一些视图,我知道它会填满屏幕。我可以滚动说第二个视图,以便在活动启动时第一个视图不可见吗?
现在我有这样的东西,但我认为它并不完美,有时我看到第一个视图,然后滚动到第二个
@Override
public void onGlobalLayout() {
if (mHorizontalScrollView.getChildCount() > 0 && mHorizontalScrollView.getChildAt(0).getWidth() > mScreenWidth) {
hsv.scrollTo(100, 0);
}
}
编辑!!
第二次尝试是使用http://developer.android.com/reference/android/view/ViewTreeObserver.OnPreDrawListener.html 而不是http://developer.android.com/reference/android/view/ViewTreeObserver.OnGlobalLayoutListener.html
在OnPreDrawListener 我们可以读到At this point, all views in the tree have been measured and given a frame. Clients can use this to adjust their scroll bounds or even to request a new layout before drawing occurs. 所以基本上在这一点上我们应该调整滚动。所以我创建了:
@Override
public boolean onPreDraw() {
if (hsv.getChildCount() > 0 && hsv.getChildAt(0).getWidth() > mScreenWidth) {
hsv.scrollTo(100, 0);
return false;
}
return true;
}
但现在它对我不起作用。
【问题讨论】:
-
张贴代码以避免反对投票。
-
我不知道为什么我会得到反对票,但是我已经准备添加一些代码,以表明我的想法。 ;)
标签: android