如何设置ScrollView的起始位置?

我一直在试图设置一个滚动视图的初始位置,但还没有find办法。 有没有人有任何想法? 此外,我有一个GoogleMaps片段作为滚动视图的子项。

谢谢,

瑞安

Related of "如何设置ScrollView的起始位置?"

是的,这是可能的:

ScrollView.scrollTo(int x, int y); ScrollView.smoothScrollTo(int x, int y); ScrollView.smoothScrollBy(int x, int y); 

可以用于那个。 x和y参数是在水平和垂直轴上滚动的坐标。

代码示例:

  @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.your_layout); ScrollView sv = (ScrollView) findViewById(R.id.scrollView); sv.scrollTo(0, 100); } 

在这个例子中,一旦Activity开始,你的ScrollView将向下滚动100个像素。

您也可以尝试延迟滚动过程:

 final ScrollView sv = (ScrollView) findViewById(R.id.scrollView); Handler h = new Handler(); h.postDelayed(new Runnable() { @Override public void run() { sv.scrollTo(0, 100); } }, 250); // 250 ms delay 

接受的答案是不适合我的。 没有直接的方法来设置滚动视图的初始位置。

但是,您可以在绘制滚动视图之前设置初始位置,如下所示:

 rootView.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { @Override public boolean onPreDraw() { scrollView.getViewTreeObserver().removeOnPreDrawListener(this); scrollView.setScrollY(100); return false; } }); 

你也可以在Handler使用scrollView.setScrollY(100) ,但是滚动的时候会滚动。

 Scrollview sw = (ScrollView) findViewById(R.id.scrollView); sw.post(new Runnable() { public void run() { sw.smoothScrollTo(0, 5000); } });