我建议,而不是更改弹出框的大小,更改表格的高度和宽度,并使用简单的辅助函数使弹出框调整大小(像这样:)
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)
}
我注意到的一件事是,您在事件侦听器中创建了表和弹出框,这意味着每次单击标签时,都会创建一个新的 Popover 实例和一个新的表实例(尽管它应该被垃圾收集,因为您覆盖了它每次,并且不应该再引用旧的)但我会避免它
并在事件监听器之外创建弹出框和表格。而它的点击事件功能,你可以只调用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();
});
在手势事件监听器中设置表格宽度而不是弹出框宽度
[...]
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();
}
[...]
这是一种可能的方式,
我在Dropbox上添加了 Resources.zip