我有一个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
答案 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);