ポップオーバーのサイズを変更するのではなく、テーブルの高さと幅を変更し、単純なヘルパー関数を使用してポップオーバーのサイズを変更することをお勧めします(sth。このように:)
function resizepopover () {
popover.height = popover.children[0].height;
popover.width = popover.children[0].width
Ti.API.info("Popover Width: " + popover.width)
Ti.API.info("Table Width:" + table.width)
Ti.API.info("Popover height: " + popover.height)
Ti.API.info("Table height:" + table.height)
}
私が気づいたことの1つは、イベントリスナー内にテーブルとポップオーバーを作成することです。つまり、ラベルをクリックするたびに、新しいポップオーバーインスタンスと新しいテーブルインスタンスが作成されます(ただし、上書きするため、ガベージコレクションを取得する必要があります)毎回、古いものへの参照はもうないはずです)が、私はそれを避けます
そして、イベントリスナーの外側にポップオーバーとテーブルを作成します。show
そして、クリックイベント関数は、ポップオーバーのメソッドとメソッドを呼び出すだけですresizepopover
。
var popover = Ti.UI.iPad.createPopover({
title : 'Search',
arrowDirection : Ti.UI.iPad.POPOVER_ARROW_DIRECTION_UP,
backgroundColor : 'white',
layout: 'horizontal',
height:"auto",
width:"auto"
});
var table = Titanium.UI.createTableView({
top: 0,
left: 0,
right: 0,
bottom: 0,
height:900,
width:700
});
popover.add(table);
label1.addEventListener('click', function (e) {
popover.show({
view : label1,
animated : true
});
resizepopover();
});
Gesture イベント リスナーで、ポップオーバーの幅ではなくテーブルの幅を設定します。
[...]
if(root.ui.isPortrait || root.ui.isLandscape) {
if(root.ui.isPortrait) {
table.width = 600;
table.height = 800;
Ti.API.info('Portrait');
} else {
table.width = 800;
table.height = 600;
Ti.API.info('Landscape');
}
resizepopover();
}
[...]
それが1つの可能な方法です。
Resources.zip をDropboxに追加しました