1

appceleratorには、折りたたみ可能な「div」を作成するためのコントロールがないようですので、自分でスピンアップしようと思いました。

1.)親View(高さ50)を作成し、ラベル(表示、クリックを意味する)、およびピッカー(非表示)を追加し、ラベルとピッカーを親ビューに配置します。

2.)ラベルをクリックして、親ビューを高さ150にアニメーション化します。

3.)ピッカーを表示します。

ただし、ピッカーは高さ50(ビューの元のサイズ)でカットオフされます。親ビューを元の高さ70に調整すると、ピッカーは70でカットオフされます。ビューのレンダリング方法に問題がありますか?より良い方法はありますか?

options_label.addEventListener('click', function(){
        var animation = Titanium.UI.createAnimation();
        animation.height = 150
        var animationHandler = function() {
           animation.removeEventListener('complete',animationHandler);
           picker.show()
        };
        animation.addEventListener('complete',animationHandler);
        category_option.animate(animation)

    })

ここに画像の説明を入力してください

4

1 に答える 1

0

appcelerator でこのような問題に何度も遭遇しました。修正には、通常、イベントの順序の切り替えが含まれます。残念ながら、これは多かれ少なかれ試行錯誤のプロセスなので、私の最善の推測は次のとおりです。

  1. 初期化時にピッカーを作成し、アニメーションの完了時に表示する代わりに、ピッカーを作成して関数内のcategory_optionビューに追加するだけです。animationHandler
  2. 上記が気に入らない場合は、高さプロパティを設定して、ピッカーの高さを適切に見えるように強制してみてください。これにより、強制的に再レイアウトがスケジュールされ、親ビューが大きくなったことが認識されるようになります。

なぜこれが起こっているのかについての私の最善の推測show()は、ピッカーのメソッドがコンポーネントの再レイアウトを引き起こしていないということです. これにより、まだ 50 単位の高さのビューにあると考えられ、それに応じてトリミングされます。私はそれについて完全に間違っている可能性がありますが、それは単なる憶測です.

于 2012-10-18T09:37:26.977 に答える