我有一个Scrollview中包含的TableLayout。在运行时期间以编程方式填充TableLayout。该表包含航班到达信息。已经填充了一个TableLayout,我希望能够向下滚动到当前时间段。
如果我知道我想滚动到表格中的第40行第100行,我该怎么做?
这是布局的XML。提前致谢。
<LinearLayout
android1:id="@+id/LinearLayout20"
android1:layout_width="fill_parent"
android1:layout_weight="1"
android:orientation="vertical"
android1:background="#000000" android:layout_height="10000dp" android:measureWithLargestChild="true">
<ScrollView
android1:id="@+id/scrollView1"
android1:layout_width="match_parent"
android1:layout_height="wrap_content">
<TableLayout
android1:id="@+id/arrivalstable"
android1:layout_width="wrap_content"
android1:layout_height="wrap_content">
</TableLayout>
</ScrollView>
</LinearLayout>
答案 0 :(得分:4)
这可能是一个迟到的答案,但希望它可以帮助某人。如果你更密切地关注Randy's link,你会发现你需要将scrollview放在runnable中,否则child.getTop()将始终生成0.
final ScrollView sv = (ScrollView) findViewById(R.id.scrollView1);
TableLayout tl = (TableLayout) findViewById(R.id.arrivalstable);
int index = 40;
final View child = tl.getChildAt(index);
new Handler().post(new Runnable() {
@Override
public void run() {
sv.smoothScrollTo(0, child.getBottom());
}
});
答案 1 :(得分:0)
看看这里:Is there a way to programmatically scroll a scroll view to a specific edit text?
int index = 40;
View child = mytablelayout.getChildAt(index);
myscrollview.scrollTo(0, child.getTop());
基本上你只需要获取视图的位置并告诉scrollview滚动到它。这需要您引用要滚动到的项目,但也可以动态获取。