Titanium“label.width”适用于iOS,但不适用于Android

时间:2012-09-13 10:16:07

标签: android ios titanium

我正在开发一款钛合金应用,并成功完成了iOS版本。 Android提出了一些问题,这里有一个问题。

视图包含许多标签,用于显示格式的数据 答: B (注意B是粗体)。那个大胆的部分是必要的,我之所以需要两个标签。

这是我正在使用的代码:

if(restaurant && !(restaurant=='no' && restaurant.length=='2')){
    var restaurant_label = Ti.UI.createLabel({
        text:'Restaurant:',
        left:3,
        height:20,
        width:'auto',
        top:0,
        textAlign:'left',
        color:'#000',
        font:{
            fontFamily:'Helvetica Neue',
            fontSize:13,
            fontWeight:'Regular'
        }
    });
    view.add(restaurant_label);
    var restaurant_value = Ti.UI.createLabel({
        text:restaurant,
        left:restaurant_label.width+10,
        height:'auto',
        width:'auto',
        top:-18,
        textAlign:'left',
        color:'#000',
        font:{
            fontFamily:'Helvetica Neue',
            fontSize:13,
            fontWeight:'Bold',
            fontStyle:'Italic'
        }
    });
    view.add(restaurant_value);
    check_localservices = false;
}

“value”标签需要在正确的位置,但android似乎无法获得先前添加的标签的宽度。

是什么给出了?

1 个答案:

答案 0 :(得分:0)

错误报告中显示,对于label.width查询报告的内容存在疑问。根据1.7版的错误报告,对您的查询的正确回复应该在Android上返回“auto”。这是因为你有'auto'作为宽度值。它会返回'auto'吗?

https://jira.appcelerator.org/browse/TIMOB-3202

看起来似乎在那里列出了正确的代码以获得您正在寻找的值。我没有对此进行测试,但看起来您可能正在查询错误的值。

根据您的情况,您似乎想要使用:

var restaurant_value = Ti.UI.createLabel({
        text:restaurant,
        left:restaurant_label.size.width+10, // <===== size
        height:'auto',
        width:'auto',
        top:-18,
        textAlign:'left',
        color:'#000',
        font:{
            fontFamily:'Helvetica Neue',
            fontSize:13,
            fontWeight:'Bold',
            fontStyle:'Italic'
        }
    });

根据评论,您可能还需要在“打开”窗口后查询size属性。如果你看一下Paul Dowsett的答案,他就有一个关于'开放'事件的听众的例子。