Xamarin表单:滚动视图中的滚动位置

时间:2014-12-01 13:47:11

标签: xamarin xamarin.forms scrollview

是否无法读取和设置滚动视图的位置?例如,我想启动应用程序,滚动位置位于底部,而不是顶部。

3 个答案:

答案 0 :(得分:0)

对于Android,我找到了一个解决方案:

我编写了一个自定义渲染器,在OnDraw覆盖方法中,我第一次调用方法时调用FullScroll(FocusSearchDirection.Down)

简单起见,Android ScrollViewRendererAndroid.Widget.ScrollView的子类型。

目前,我不需要iOS的实现,所以我没有iOS的解决方案。

答案 1 :(得分:0)

您可以从ScrollView对象的ScrollX和ScrollY属性获取ScrollView的X和Y位置。然后,您可以使用ScrollView方法ScrollToAsync设置位置。

var x = scrollView.ScrollX;
var y = scrollView.ScrollY;

...

bool animate = false;
scrollView.ScrollToAsync(x, y, animate);

答案 2 :(得分:0)

我有一个更好的方法!

您可以将其添加到onAppearing()方法中:

protected override void OnAppearing()
    {
        base.OnAppearing();

        /*Other stuff*/

        viewModel.Messages.CollectionChanged += (sender, e) =>
        {
            var target = viewModel.Messages[viewModel.Messages.Count - 1];                

            ItemsListView.ScrollTo(target, ScrollToPosition.End, false);
        };            
    }

这意味着,如果您的集合发生更改,您将获得目标,该目标是您使用scrollTo目标的最后一项(底部的项),位置结束,动画为假。

当您到达页面的底部时,您将看不到滚动,因为动画是错误的!