Problem
A view with height set to Ti.UI.SIZE and fixed height children will incorrectly behave like Ti.UI.FILL *IF* the child contains its own child view with height set to Ti.UI.FILL.
Test case
var window = Ti.UI.createWindow({backgroundColor: "white"});
var dynamicHeight = Ti.UI.createView({height: Ti.UI.SIZE, backgroundColor: "yellow"});
window.add(dynamicHeight);
var fixedHeight = Ti.UI.createView({height: 100, backgroundColor: "red"});
dynamicHeight.add(fixedHeight);
var fillHeight = Ti.UI.createView({height: Ti.UI.FILL, width: "50%", backgroundColor: "blue"});
fixedHeight.add(fillHeight);
// Toggle height between fill and fixed
window.addEventListener('click', function() {
fillHeight.height = (fillHeight.height == Ti.UI.FILL) ? 100 : Ti.UI.FILL;
});
window.open();
Expected: dynamicHeight should be the same size as its fixed height child.
Actual: dynamicHeight fills the screen.
Workaround
Don't use FILL anywhere inside a SIZE if you value your sanity.
If one of the parents is fixed height or width, do not consider for fill conflict. https://github.com/appcelerator/titanium_mobile/pull/5099
Closing ticket as fixed.