如何滚动到TextView上最后一个附加的文本?

时间:2013-08-07 01:15:55

标签: xamarin.android textview xamarin android-scrollview android

所以我的C#Android应用程序上有一个多行TextView。我正在使用它作为一种“状态”记录器..

所以,我可能会有这样的事情:

探测小部件 发现了适当的小部件 配置小部件

每条线可能需要几秒钟才会出现,因为它相对较慢。

所以,我在ScrollView中有一个TextView,如下所示:

<ScrollView
        p1:minWidth="100px"
        p1:minHeight="100px"
        p1:layout_width="fill_parent"
        p1:layout_height="match_parent"
        p1:id="@+id/scrollView1">
        <TextView
            p1:id="@+id/terminalOutput"
            p1:layout_width="fill_parent"
            p1:layout_height="fill_parent" />
    </ScrollView>

这很好用,我可以使用.Append方法附加到TextView。然而,问题是最终会有很多状态消息,文本会在屏幕上显示下来。此时,您必须在滚动视图中手动拖动以读取最新的状态消息。

我想要它,以便每当附加一段文本并且它离开屏幕以使其向下滚动滚动视图以便用户可以在不手动滚动的情况下阅读最新消息。

我该怎么做?

这是我到目前为止所尝试的:

        Logger = new TextLogger((s) =>
            {
            RunOnUiThread(() =>
                          {
                var textview=FindViewById<TextView>(Resource.Id.terminalOutput); 
                textview.Append(s + "\n");
                var scrollview=FindViewById<ScrollView>(Resource.Id.scrollView1);
                scrollview.ScrollTo(0,scrollview.Bottom);
                textview.ScrollTo(0, textview.Bottom);

            });
        });

这种作品,但似乎它从未完全滚动到实际的底部。它向下滚动,但总是像底部的两行,留下一些文字仍然隐藏

1 个答案:

答案 0 :(得分:0)

请尝试使用ScrollView.FullScroll方法:

scrollview.FullScroll(Android.Views.FocusSearchDirection.Down)