0

这似乎是一个奇怪的问题,但是当在 Appcelerator Titanium 中为多个平台开发时,知道元素在哪里结束会非常方便,因为设备有不同的尺寸。

那么,有没有可能知道一个对象从哪里开始和结束呢?例如,我有一个分组表视图,在它下面我有一个地图,我想使用分组表视图下剩余的所有可用空间。我该怎么做呢?

我尝试了以下方法:

var winDetailView = Titanium.UI.currentWindow;
var tableDetailRowData = getDetailData();

var tableDetailView = Ti.UI.createTableView({
    headerTitle:'Object',
    style:Titanium.UI.iPhone.TableViewStyle.GROUPED,
    backgroundColor:'transparent',
    data:tableDetailRowData,
    height : Ti.UI.SIZE,
});
winDetailView.add(tableDetailView);


var mapView = Ti.Map.createView({
        top : 200, // this is approximately where my table ends (is there a way to know the exact place?)
        left : "10%",
        height : "90%", // this doesn't work, since it uses 90% of the device height pixels, not 90% of the remaining pixels below the top property
        width : "90%",
        mapType : Ti.Map.STANDARD_TYPE,
})

但这并不能解决问题。有任何想法吗?

更新:getSize()属性似乎适用于某些对象。不幸的是,使用 Grouped tableView 返回的大小几乎是整个屏幕,因此它没有提供必要的尺寸。

4

1 回答 1

1

jbsm,

您可以尝试以下方法来实现您想要的:

1.定义窗口或父视图的布局(tableView和mapView)
'layout':'vertical'

2.给tableView的高度Titanium.UI.SIZE(height:Titanium.UI.SIZE)。这意味着表格视图将占用显示所有内容所需的最小空间。

3.在 mapView 的顶部写上 '10dp' 或 '20dp' 无论你想要的顶部是什么。

这里的诀窍是你已经设置了布局:垂直。这样一个父视图中每个视图的顶部都相对于它上面的那个。所以如果你指定'5dp'它将是相对于视图的底部在它上面而不是从窗口的顶部。所以在这种情况下,mapView 的顶部将从 tableView 的底部计算。

于 2013-04-22T15:18:51.787 回答