2016-06-14 56 views
0

我有一个scrollview,里面有一个gridlayout视图。在该网格布局中,每个项目都有一个带有复选框的列表。无论何时用户选择一个项目,最下面一行应该缓慢展开并显示所选项目的详细信息。这是我与boxview的尝试,但它不起作用。任何建议如何解决这个问题?缓慢扩展Gridlayout的行

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; 
     } 
    } 

UPDATE:

这仍然无法正常工作。 boxview立即显示

所以我改变了我的代码,每个建议:

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 

回答

0

添加一些时间,你的动画。

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); 

您设定的高度以上 HeightRequest = 0和开始你的动画和0这将可能close您BoxView中结束。尝试在end属性中添加较大的值以获得所需的动画,例如

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

所以我更新了我的代码,但boxview显示而不是动画。 – user30646

+0

增加时间长度:4000或任何期望的值。 –

+0

它设置为10,000。 – user30646