Я хочу показать второй макет стека, когда на первый макет стека нажимается анимация.Он хорошо работает после первой попытки.
Мой вопрос: анимация не работает с первой попытки.
код -
private TapGestureRecognizer tg;
public MainPage()
{
InitializeComponent();
answerStack.IsVisible = false;
tg = new TapGestureRecognizer();
tg.Tapped += Tg_Tapped;
questionStack.GestureRecognizers.Add(tg);
}
public Animation animate;
void Tg_Tapped(object sender, EventArgs e)
{
var answerHeight = answerStack.Height;
answerStack.IsVisible = !answerStack.IsVisible;
questionStack.GestureRecognizers.Remove(tg);
animate = new Animation(d => answerStack.HeightRequest = d, 0, answerHeight);
animate.Commit(answerStack, "a", 5, 450, Easing.CubicIn, (data, x) => {
Device.BeginInvokeOnMainThread(() => {
answerStack.HeightRequest = answerHeight;
questionStack.GestureRecognizers.Add(tg);
});
}, null);
}
GitHub Link - https://github.com/manieshavirt/XamarinAccordion
Причиной проблемы является то, что "answerHeight" устанавливается в -1 во время первой анимации.В последующих анимациях «answerHeight» выводится из высоты содержимого ответа, поэтому имеется плавная анимация. Если я вручную устанавливаю значение «answerHeight» во время первой анимации, переход анимации выглядит плавно.Однако я не хочу устанавливать значение вручную, вместо этого мне нужно извлечь значение из высоты содержимого ответа во время первой анимации.
Как мне этого добиться?