慢慢扩展Gridlayout的行

时间:2016-06-14 03:34:46

标签: xamarin.forms

我有一个scrollview,在其中,是一个gridlayout视图。在gridlayout内部,我有一个列表,其中包含每个项目的复选框。每当用户选择一个项目时,底行应该缓慢展开并显示所选项目的详细信息。这是我对boxview的尝试,但它不起作用。有任何建议如何解决这个问题?

void OnChanged(object sender, EventArgs e)
    {
        if (statusBar == null)
        {
            statusBar = new BoxView { Color = Color.FromHex("#33B5E5"), HeightRequest = 0 };
            mainGrid.Children.Add(statusBar, 0, 4);
            Grid.SetColumnSpan(statusBar, 2);

            var animate = new Animation(d => statusBar.HeightRequest = d, 1, statusBar.Height, Easing.SpringIn);

            animate.Commit(this, "a");
        }

        if (((CheckBox)sender).Checked)
            checkedCount++;
        else
            checkedCount--;

        if(checkedCount == 0)
        {
            mainGrid.Children.Remove(statusBar);
            statusBar = null;
            return;
        }
    }

更新:

这仍然无法奏效。 框视图立即显示

所以我根据建议改变了我的代码:

statusBar = new BoxView { Color = Color.FromHex("#33B5E5"), HeightRequest = 0 };
            mainGrid.Children.Add(statusBar, 0, 4);
            Grid.SetColumnSpan(statusBar, 2);

            var animate = new Animation(d => statusBar.HeightRequest = d, 1, 1000, Easing.SpringIn);
            animate.Commit(this, "a", length: 10000);//animation takes 2 sec to complete

1 个答案:

答案 0 :(得分:1)

为动画添加一些时间。

animate.Commit(this, "a",length:2000);//animation takes 2 sec to complete

我不明白你的代码。

 var animate = new Animation(d => statusBar.HeightRequest = d, 1, statusBar.Height, Easing.SpringIn);

您将上方的高度设置为 0 HeightRequest = 0并以 1 开始动画并结束于0,这可能会close您的boxview 。尝试在结束属性中添加更大的值以获得所需的动画,例如

var animate = new Animation(d => statusBar.HeightRequest = d, 1, 100, Easing.SpringIn);