UI元素获取方法返回NAN Titanium

时间:2015-01-19 23:22:50

标签: titanium titanium-mobile

我有钛3.5.0的问题。当我想根据布局中的前一个元素使用getWidthgetTop之类的方法来定位我的ui元素时,我正在使用Nan,并且在控制台中我收到一条警告:

  

请求的维度值(nan)无效。改为使维度未定义。

我有scrollview我想安排我的项目,所以我做了什么 这是我的滚动视图代码

var scrollView = Ti.UI.createScrollView({
    contentWidth: 'auto',
    contentHeight: 'auto',
    backgroundColor:'#fff',
    showVerticalScrollIndicator: false,
    showHorizontalScrollIndicator: false,
    height:"100%",
    width: "100%",
    top:36.6
});  

和scrollableview代码

var view = Ti.UI.createView({
      backgroundColor:'#fff',
      borderRadius: 0,
      height: 2000,
      width: Ti.UI.FILL
    });

然后我开始在视图中添加我的ui元素

var type =Ti.UI.createLabel({
    text:"Type",
    color:label_color,
    right:207,
    left:label_p_l,
    font:{ fontFamily: customfont,fontSize:17},
    top:37.5

});   
var p_name=Ti.UI.createLabel({
    text:"Property Name",
    color:label_color,
    left:label_p_l,
    font:{ fontFamily: customfont,fontSize:17},
    top:type.getTop()+label_h+32
});

所以现在它工作得很好,因为type有一个数值,甚至我用这种方式添加了三个元素,之后每个东西都完美地工作了 我已经添加了这样的第4个元素,现在当我开始得到Nan时。

var space_Slider = Titanium.UI.createSlider({
         top:space.getTop()+space.getHeight()+15,
         min:0,
         max:1000,
         value:0,
         height:4,
         backgroundColor:"#fff",
         leftTrackImage:'/images/slider_color.png',
         rightTrackImage:'/images/slider_color.png',
         thumbImage:'/images/slider.png',

    });

现在space.getTop()开始返回Nan

任何想法如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

发生这种情况是因为您指定的宽度/顶部不是数字数据类型,而是字符串。 "100%""15dp"

getWidth()返回数值数据类型 IFF ,在构造元素或调用setter方法时,将数字传递给width参数。

此外,如果在构造元素期间未指定width / top参数,则它们不会返回任何内容。

要获取元素的尺寸,需要将它们添加到某个容器/父视图和postlayout所有元素。完成此操作后,您可以询问以下尺寸:

element.size.width