Xamarin表单 - ScrollView - ScrollToAsync到底部不能按预期工作

时间:2017-10-31 15:52:21

标签: xamarin.forms scrollview

我有一个屏幕,它使用堆栈布局和scrollview显示注释列表。用户可以再添加一条评论,点击提交将在此滚动视图的末尾为Xamarin Forms - Android和iOS应用添加一条评论。要求是滚动此列表以显示最新的显示注释元素。为此,我使用了下面的代码行,但它不会向上滚动直到最后一个元素,而是第二个元素。我在IOS和Android中都观察过它。

await scrollView.ScrollToAsync(stkMain, ScrollToPosition.End, true);

下图可以更好地了解它。

enter image description here

如图所示,尽管我使用上面的代码滚动到结尾,但是在屏幕上看不到堆栈布局3。我必须向上滚动滚动视图才能看到堆栈布局3。

预期行为 - 滚动视图应滚动直到完成屏幕上显示的最后一个元素。请建议如果我做得不对。

我忘记提到的一件事是,当我在调试模式下使用scrolToAsync方法创建点。断点击中该线,如果我点击F5将使最后一个元素可见。我很惊讶地看到它,但它发生了

2 个答案:

答案 0 :(得分:4)

添加新的评论元素操作完成后添加一些延迟,然后尝试滚动到stkMain的最后一个孩子,而不是。

这样的事情:

var lastChild = stkMain.Children.LastOrDefault();
if(lastChild != null)
    scrollView.ScrollToAsync(lastChild, ScrollToPosition.MakeVisible, true);

答案 1 :(得分:1)

如果您想直接滚动到底部,请尝试

        Device.BeginInvokeOnMainThread(async () =>
        {
            // Update your children here, add more or remove.
            // todo

            if (Device.RuntimePlatform == Device.Android)
            {
                await scrollView.ScrollToAsync(0, stkMain.Height, true);
            }
            else
            {
                await Task.Delay(10); //UI will be updated by Xamarin
                await scrollView.ScrollToAsync(stkMain, ScrollToPosition.End, true);
            }

        });