如何通过知道元素ID滚动到ScrollView内的特定视图元素
问题描述:
我的布局位于ScrollView
之内。元素的id和我想要与我的搜索滚动的元素的类型,我发现下面的代码来做到这一点,但我没有成功滚动到特定于id的元素,我给了0,id作为两个参数。如何通过知道元素ID滚动到ScrollView内的特定视图元素
ScrollView sv = (ScrollView) mainActivity.findViewById(R.id.scrollview);
scrollview.scrollTo(0,id);
答
获取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.礼貌 - 法赫米:)
但是这里的前提条件是,它需要的视图的位置,以滚动的,而不是它的ID。 所以你必须先找到你的视图位置,然后将它们作为参数传递给scrollTo。使用下面的用于获取位置,
View.getLocationOnScreen(int[] location);
此返回一个整数数组,其中(X =位置[0]和Y =位置[1])。这个方法是docs。
k.What我应该作为参数传递scrollTo直接元素ID将工作? – praveen
立即看到我的编辑并尝试这一个。让我知道事情的后续。此外,我发现这个方法getGlobalVisibleRect()在这里,http://*.com/questions/3619693/getting-views-coordinates-relative-to-the-root-layout。如果第一个不适合你的需要,试试这个。 –
但我只是有id,元素类型只与我这些只有我不能滚动 – praveen