2016-06-14 6 views
0

私はスクロールビューを持っていて、その内部にはグリッドレイアウトビューがあります。そのグリッドレイアウト内には、各項目のチェックボックス付きリストがあります。ユーザーが項目を選択すると、一番下の行がゆっくりと展開され、選択した項目の詳細が表示されます。これは私の試み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:

これはまだ動作しません。 すぐにボックスビューが表示されます

だから私は提案どおりに私のコードを変更:

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

あなたは、これはおそらくあなたのBoxView内をcloseます HeightRequest = 0に上の高さを設定し、であなたのアニメーションを開始し、0で終わるされています。たとえば、目的のアニメーションを得るためにend属性に大きな値を追加してみてください。

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

私は自分のコードを更新しましたが、ボックスビューはアニメーションではなく瞬時に表示されます。 – user30646

+0

'length:4000'または任意の値を増やします。 –

+0

10,000に設定されています。 – user30646

関連する問題