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



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

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

获取ScrollView的ViewTreeObserver,并向ViewTreeObserver添加一个OnGlobalLayoutListener。然后从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);
}
});

来源。礼貌-fahmy:)

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

View.getLocationOnScreen(int[] location);

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

最新更新