2

我有一个包含在滚动视图中的 TableLayout。TableLayout 在运行时以编程方式填充。该表包含航班到达信息。一个 TableLayout 已被填充,我希望能够向下滚动到当前时间段。

如果我知道我想滚动到表中 100 行的第 40 行,我该怎么做?

这是布局的 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>
4

2 回答 2

5

这可能是一个迟到的答案,但希望它可以帮助某人。如果您更密切地关注Randy 的链接,您会发现您需要将滚动视图放置在可运行文件中,否则 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());
    }
});
于 2013-10-24T23:05:44.713 回答
0

看看这里:有没有办法以编程方式将滚动视图滚动到特定的编辑文本?

int index = 40;
View child = mytablelayout.getChildAt(index);
myscrollview.scrollTo(0, child.getTop());

基本上你只需要获取视图的位置并告诉滚动视图滚动到它。这需要您引用要滚动到的项目,但您也可以动态获取它。

于 2013-08-29T01:58:08.517 回答