Xamarin表单:在translateto上更改scrollview的大小

时间:2015-12-04 08:09:03

标签: xamarin scrollview xamarin-forms

我想做的是:

我的视图中有一个滚动视图,它的高度类似于父高度的2/9。然后,用户可以翻译此滚动视图以使其更大。但是,scrollview的大小并没有明显改变。因此即使它更大,scrollview的大小仍然保持不变,这就是重点。我最初可以把它变大。然而它不会滚动因为尺寸足够大而不能滚动。

我不知道是否能够正确解释。希望我做到了。

问候。

修改 -------------

一些代码可以进一步解释我的观点

这是scrollview

public class TranslatableScrollView : ScrollView
{
        public Action TranslateUp { get; set; }
        public Action TranslateDown { get; set; }
        bool SwipedUp;
    public TranslatableScrollView()
    {
        SwipedUp = false;
        Scrolled += async delegate {
            if (!SwipedUp && ScrollY > 0) {
                TranslateUp.Invoke ();
                SwipedUp = true;
            } else if (SwipedUp && ScrollY <= 0) {

                TranslateDown.Invoke ();
                SwipedUp = false;
            }
        };
    }
}

这是页面中的代码

sv_footer = new TranslatableScrollView {
                    Content = new StackLayout {
                        VerticalOptions =         LayoutOptions.FillAndExpand,
                        HorizontalOptions = LayoutOptions.FillAndExpand,
                        Children = {
                            l_details,
                            l_place
                        },
                    }
                };
sv_footer.TranslateUp += new Action (async delegate {

                Parent.ForceLayout();
                await cv_scrollContainer.TranslateTo(0, -transX, aSpeed, easing);
            });

sv_footer.TranslateDown += new Action (async delegate {
                await cv_scrollContainer.TranslateTo(0, 0, aSpeed, easing);
            });

cv_scrollContainer = new ContentView {
                Content = sv_footer,
                VerticalOptions = LayoutOptions.Fill
            };

我将scrollview放在contentview中,否则当它们被翻译时它的滚动索引变为0。参考:Xamarin Forms: ScrollView returns to begging on TranslateTo

1 个答案:

答案 0 :(得分:3)

问题是,translateTo只改变元素的位置。我可以在翻译后使用scaleTo。然而,它改变了两个方面。来自Xamarin论坛的人建议我使用我不知道存在的LayoutTo。使用布局您可以更改大小和位置。给出一个Rectangle类型的实例。