1

我正在用钛开发一个应用程序,并成功完成了 iOS 版本。Android 存在一些问题,这里有一个。

该视图包含许多标签,用于以 A: 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;
}

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

是什么赋予了?

4

1 回答 1

0

它出现在错误报告中,关于 label.width 查询应该报告的内容存在一些问题。根据 1.7 版的错误报告,对您的查询的正确响应应在 Android 上返回“自动”。之所以如此,是因为您将“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 的答案,他有一个关于“打开”事件的侦听器示例。

于 2012-09-13T17:14:55.560 回答