私は、他のボタンが追加または削除されたかどうかによって、成長して縮小するボタンの行を持っています。 FlexboxLayout
がこの仕事に最も適しているようですが、手動で幅のパーセンテージを手動で操作する以外には、この問題にどのようにアプローチするのか分からないようです。NativeScriptのFlexboxLayoutで挿入したり削除したりした要素をアニメートする方法は?
私はflexGrow
を設定してから、visibility: collapse
のクラスを使って基本的にボタンを削除できると思っていました。 (そして、正常に戻ったときに逆戻りします。)これはうまくいきますが、その変化はかなり瞬時です。私はいくつかの並べ替え/ストレッチアニメーションをしたいと思います。
アニメーションで試してみましたが、以下のように縮尺を0に縮小しました。ボタンは縮小しているように見えましたが、それはそれ自体の中心に向かって行っただけで、まだ隙間を残していました。
私はこのような単純な例で遊んだ:
<FlexboxLayout flexDirection="row">
<Button text="1" width="25%" flexGrow="1"></Button>
<Button text="2" width="25%" id="test-button"></Button>
<Button text="3" width="25%" flexGrow="1"></Button>
<Button text="4" width="25%" flexGrow="1"></Button>
</FlexboxLayout>
そして私は私が去っにボタン#2を縮小したい、このような何か、やってみました:私も
let testButton = this.page.getViewById("test-button");
testButton.animate({
scale: { x: 0, y: 1},
duration: 500
});
をキーフレームでそれをしようとしました。それは何もしないようだった。
#test-button {
animation-name: shrink;
animation-duration: 2s;
animation-delay: 1s;
}
@keyframes shrink {
from { width: 25%; }
to { width: 0; }
}
私はin this answer here for web pages言及されたもののような何かをしようとしたが、それはまた、何もしていないようでした。
setTimeout
を使用して手動で幅を調整するデータバインディングを使用することで、この機能を使用できるようになりました。しかし、管理が簡単な別のルートが存在するかどうかは疑問でした。助けてもらえませんが、多分私が他の試みで何かを悩ましているのではないかと思います。
ちょっとああをサンプルコードを添付しています、それはそれを行う方法です!便利なコードもありがたいです! :Dありがとう。唯一のことは、まだ崩壊の可視性を設定することで、即時にスナップすることです。私はそれがまだかなりクールなので、私はちょうど同様に同様によく似ているかどうかは分かりません。 しかし、他の要素が活気に満ちたオープニングスペースに成長した場合、データバインディングだけができることだと思いますか?私がデータバインディングでそれを取り除く方法は、1つのボタンを縮小することでした。そして、他のボタンは縮小するにつれて大きくなります。 – Codana