如何通过知道元素id滚动到ScrollView中的特定视图元素

时间:2014-02-21 09:56:35

标签: android layout scrollview

我的布局位于ScrollView内。我想用我的搜索滚动的元素的id和元素的类型我发现下面的代码做了但是我没有成功滚动到特定于id的元素,我给了0,id作为两个参数

ScrollView sv = (ScrollView) mainActivity.findViewById(R.id.scrollview);
  scrollview.scrollTo(0,id);

1 个答案:

答案 0 :(得分:1)

获取ScrollView的ViewTreeObserver并将OnGlobalLayoutListener添加到ViewTreeObserver。然后从OnGlobalLayoutListener的onGlobalLayout()方法调用ScrollView.scrollTo(x,y)方法。

 ScrollView mainScroll = (ScrollView) findViewById(R.id.average_scroll_mainScroll);

 ViewTreeObserver vto = scrollView.getViewTreeObserver();
 vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
      public void onGlobalLayout() {
           mainScroll.scrollTo(0, 0);
      }
 });

Source.礼貌 - fahmy:)

然而,这里的问题是它需要视图的位置才能滚动到而不是它的ID。 因此,您必须首先找到您的视图位置,然后将它们作为参数传递给scrollTo。使用以下内容获取位置

View.getLocationOnScreen(int[] location);

这将返回一个整数数组,其中(x = location [0]和y = location [1])。以下是此方法的docs