适用于Android
我在表格行中有两个标签。我试图将这两个标签设置为垂直,但firstLabel
与第二个重叠。由于firstLabel
的高度为“自动”,并且它包含动态文字,例如10行,20行。
由于firstLabel
的动态高度,我无法设置secondLabel
的顶部,因此它会重叠。
我已尝试在SO和Appcelerator上提供所有可能的解决方案但无法找到修复程序。
1)。在将其添加到视图,表格行等之后或之前,我无法获得firstLabel
的高度...
2)尝试set height of label according to text's length,但无法修复它。
仍在寻找解决方案..
答案 0 :(得分:5)
您需要做的是不在标签上将布局设置为垂直,而是在包含所有标签的视图上。如果父视图具有垂直布局,则会在第一个标签结束后立即放置第二个标签。此外,设置第二个标签的“top”属性会将许多单位放在label1的底部和标签2的顶部之间。想想CSS中块元素的相对位置。
答案 1 :(得分:0)
解决了......根据DannyM的回答。我还注意到,在行中添加标签顺序也很重要。
for (var i = 0; i < results.length; i++)
{
// Create a row and set its height to auto
row = Titanium.UI.createTableViewRow
({
height:'auto',
layout :'vertical'
});
var currentObj = results[i];
// Create the label to hold the place name
var placeNameLabel = Titanium.UI.createLabel
({
text:currentObj.PlaceName,
left:'75dp',
top:'auto',
width:'auto',
height:'18dp',
textAlign:'left',
font:{fontSize:'14dp',fontWeight:'bold'},
wordWrap:true
});
var placeAddressLabel = Titanium.UI.createLabel
({
text:currentObj.PlaceAddress,
left:'75dp',
top:'auto',
width:'230dp',
height:'auto',
textAlign:'left',
font:{fontSize:'14dp'}
});
var checkInDate = Titanium.UI.createLabel
({
text:currentObj.CheckInDate+' '+currentObj.CheckInTime,
left:'75dp',
top:'auto', //placeAddressLabel.height + 30 +'dp',
width:'165dp',
height:'25dp',
textAlign:'left',
font:{fontSize:'14dp'},
wordWrap:true,
});
row.add(placeNameLabel);
row.add(placeAddressLabel);
row.add(checkInDate)
tableData[i] = row;
}
return tableData ;