Titanium Appcelerator:使用子视图百分比高度,父视图未填充

Titanium Appcelerator:使用子视图百分比高度,父视图未填充,titanium,appcelerator,Titanium,Appcelerator,我有一个自定义的iOS页眉和页脚,分别为60dp和40dp高度。在我称之为主体的其余区域中,我添加了5个子视图,每个子视图具有20%的高度和不同的非白色背景色。最后,在最后一个子视图之后和页脚上方有一个白色的间隙。使用1个子视图(高度为100%)或2个子视图(高度各为50%)时,没有间隙。因此,我假设这是由舍入引起的。我如何解决这个问题并继续使用百分比?我也遇到了这个问题并产生了一个问题: 我也遇到了这个问题,产生了一个问题: 另一种方法是不使用明确的高度。相反,将元素放置在特定的基于百分比的顶

我有一个自定义的iOS页眉和页脚,分别为60dp和40dp高度。在我称之为主体的其余区域中,我添加了5个子视图,每个子视图具有20%的高度和不同的非白色背景色。最后,在最后一个子视图之后和页脚上方有一个白色的间隙。使用1个子视图(高度为100%)或2个子视图(高度各为50%)时,没有间隙。因此,我假设这是由舍入引起的。我如何解决这个问题并继续使用百分比?

我也遇到了这个问题并产生了一个问题:

我也遇到了这个问题,产生了一个问题:
另一种方法是不使用明确的高度。相反,将元素放置在特定的基于百分比的顶部和底部之间。因此,如果您有5个视图,请将第一个视图放置在
顶部:“0%”,底部:“80%”
。(这应该相当于
顶部:“0%”,高度:“20%”
,但有明显的舍入误差,它不是…)然后在
顶部:“20%”,底部:“60%”下一个。继续放置最后3个视图。它们将一个接一个地出现。(因为舍入误差会相互抵消,所以不会有任何间隙。)

下面是一个实际的例子:

var win = Ti.UI.createWindow({
    backgroundColor: 'red'
});

win.add(/*header*/Ti.UI.createView({
    top: 0,
    height: 60,
    backgroundColor: 'green'
}));

var content = Ti.UI.createView({
    top: 60, bottom: 40,
    height: Ti.UI.FILL
});
var childCount = 5;
for(var i = 0; i < childCount; i++) {
    content.add(Ti.UI.createLabel({
        text: 'Child ' + (i + 1),
        width: Ti.UI.FILL,
        top: (20 * i) + '%', // 0%, 20%, 40%, 60%, 80%
        bottom: (20 * (childCount - 1 - i)) + '%', // 80%, 60%, 40%, 20%, 0%
        backgroundColor: 'gray'
    }));
}
win.add(content);

win.add(/*footer*/Ti.UI.createView({
    bottom: 0,
    height: 40,
    backgroundColor: 'blue'
}));

win.open();
var win=Ti.UI.createWindow({
背景颜色:“红色”
});
win.add(/*header*/Ti.UI.createView)({
排名:0,
身高:60,
背景颜色:“绿色”
}));
var content=Ti.UI.createView({
顶部:60,底部:40,
高度:Ti.UI.FILL
});
var-childCount=5;
对于(变量i=0;i
另一种方法是不使用明确的高度。相反,将元素放置在特定的基于百分比的顶部和底部之间。因此,如果您有5个视图,请将第一个视图放置在
顶部:“0%”,底部:“80%”
。(这应该相当于
顶部:“0%”,高度:“20%”
,但有明显的舍入误差,它不是…)然后在
顶部:“20%”,底部:“60%”下一个。继续放置最后3个视图。它们将一个接一个地出现。(因为舍入误差会相互抵消,所以不会有任何间隙。)

下面是一个实际的例子:

var win = Ti.UI.createWindow({
    backgroundColor: 'red'
});

win.add(/*header*/Ti.UI.createView({
    top: 0,
    height: 60,
    backgroundColor: 'green'
}));

var content = Ti.UI.createView({
    top: 60, bottom: 40,
    height: Ti.UI.FILL
});
var childCount = 5;
for(var i = 0; i < childCount; i++) {
    content.add(Ti.UI.createLabel({
        text: 'Child ' + (i + 1),
        width: Ti.UI.FILL,
        top: (20 * i) + '%', // 0%, 20%, 40%, 60%, 80%
        bottom: (20 * (childCount - 1 - i)) + '%', // 80%, 60%, 40%, 20%, 0%
        backgroundColor: 'gray'
    }));
}
win.add(content);

win.add(/*footer*/Ti.UI.createView({
    bottom: 0,
    height: 40,
    backgroundColor: 'blue'
}));

win.open();
var win=Ti.UI.createWindow({
背景颜色:“红色”
});
win.add(/*header*/Ti.UI.createView)({
排名:0,
身高:60,
背景颜色:“绿色”
}));
var content=Ti.UI.createView({
顶部:60,底部:40,
高度:Ti.UI.FILL
});
var-childCount=5;
对于(变量i=0;i
你能分享一些代码吗?是的,我还看到底部有一个发际线间隙(约2dp),但仅在垂直布局的情况下。你能分享一些代码吗?是的,我也看到底部有一个发际线间隙(约2dp),但仅在垂直布局的情况下。