如何设置ScrollView的起始位置?

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

谢谢,

瑞安

  • 检测ScrollView的结尾
  • 如何使“滚动条”出现在左侧?
  • Android ScrollView fillViewport无法正常工作
  • GridView有两列,第一项跨越两列
  • 如何制作zoomable scrollview?
  • 如何在Webview中向下滚动时隐藏ActionBar /工具栏
  • ScrollView不会滚动到内部LinearLayout底部边距的末尾
  • 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); } });