钛:标签重叠问题

时间:2012-03-16 13:46:14

标签: android titanium appcelerator titanium-mobile

适用于Android

我在表格行中有两个标签。我试图将这两个标签设置为垂直,但firstLabel与第二个重叠。由于firstLabel的高度为“自动”,并且它包含动态文字,例如10行,20行。

由于firstLabel的动态高度,我无法设置secondLabel的顶部,因此它会重叠。

我已尝试在SO和Appcelerator上提供所有可能的解决方案但无法找到修复程序。

1)。在将其添加到视图,表格行等之后或之前,我无法获得firstLabel的高度...

2)尝试set height of label according to text's length,但无法修复它。

仍在寻找解决方案..

enter image description here

2 个答案:

答案 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 ;