【问题标题】:How to scroll to the last appended piece of text on a TextView?如何滚动到 TextView 上最后附加的一段文本?
【发布时间】:2013-08-07 01:15:55
【问题描述】:

所以我的 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);

            });
        });

这种工作,但似乎它永远不会完全滚动到实际底部。它向下滚动,但总是距离底部 2 行,留下一些文本仍然隐藏

【问题讨论】:

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


    【解决方案1】:

    尝试改用ScrollView.FullScroll 方法:

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

    【讨论】:

    • 我试过了,但它仍然向下滚动到实际底部的大约 2 行,导致一些文本仍然被截断。这可能与缓存有关吗?我试过禁用缓存等,但这似乎也没有帮助
    猜你喜欢
    • 1970-01-01
    • 2016-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-09
    • 1970-01-01
    • 2021-09-28
    • 1970-01-01
    相关资源
    最近更新 更多