伙计我在“方向改变”上遇到“如何调整大小”问题的问题。请带Demo source-code。
执行以下步骤以重新生成问题:
下载附带的源代码,打开并运行它。 :)
=>你会看到一个白色的窗口,窗口的中间只有一个未命名的按钮。
点击按钮。
=>它将从按钮打开Popover控件。它包含一个空白的Tableview。
从肖像< - >更改iPad方向横向。
=>检查方向更改时,弹出窗口大小是否正在更改但内部内容的大小(Tableview)未更改。因此,它在Tableview周围留下了蓝色的空白部分。
请告诉我是否有任何答案可以治疗突击并赢得他们的心。
感谢。
答案 0 :(得分:0)
我建议,而不是改变弹出窗口的大小,改变表格的高度和宽度,并使用一个简单的辅助函数使弹出窗口调整大小(就像这样:)
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)
}
有一点,我注意到,你在eventlistener中创建了Table和popover, 这意味着每次单击Label时,都会创建一个新的Popover实例和一个新的表实例(它应该会收集垃圾,因为你每次都会覆盖它,并且不应再对旧的引用了)但是我会避免它
在eventlistener之外创建popover和table。
而点击事件功能你只需调用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();
});
在Gesture事件中的Listener设置表格宽度而不是弹出框宽度
[...]
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答案 1 :(得分:0)
Titanium为此问题创建了票证,这是他们的内部错误。