2012-09-13 66 views
1

我正在开发钛合金应用程序,并成功完成了iOS版本。 Android正出现一些问题,这里有一个。Titanium“label.width”适用于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似乎并不能够得到先前添加的标签的宽度。

什么给?

+2

欢迎来到Titanium和大多数(所有?)跨平台所谓解决方案的苦难。这类问题经常发生。 – borrrden

回答

0

它出现在一个错误报告中,对于它认为由label.width查询报告的内容存在一些疑问。根据版本1.7的错误报告,对您的查询的正确回应应该在Android上返回“自动”。这是因为你有'自动'作为宽度的值。它返回'自动'?

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' 
     } 
    }); 

根据该意见,你可能还需要查询“开放”窗口后的尺寸属性。如果你看看Paul Dowsett的回答,他有一个关于'开放'事件的听众的例子。

相关问题