0

所以我想做的是:我正在从 sqlite db 加载数据并将其与 a 一起使用while... isValidRow来动态创建一组按钮,我设置了一个静态topleft(或右)。我发现如果我将所有按钮的父级设为 acreateView()并将其设置layouthorizontal,这将创建一个漂亮的网格。

var brandView = Ti.UI.createView({  
    width: 100,
    height: 100,
    left: 0,
    layout: 'horizontal',
    textAlign: 'center'
});


while(rows.isValidRow()) {
     var dynamicButton = Ti.UI.createButton({
        width: 10,
        height: 10,
        top: 10,
        left: 10,
        title: rows.fieldByName('name');
    });
    view.add(dynamicButton);

    rows.next();
}

我遇到的问题是,有时按钮的数量超过了一次在屏幕上显示的数量,因此按钮向下延伸到可见屏幕下方。因此,我将视图转到 a createScrollView,并且layout仍然设置为horizontal(或垂直),它现在将按钮并排放置,延伸到屏幕之外的一侧(失去网格位置)。所以我的问题是如何使视图可滚动并使按钮以网格样式形式出现?

4

2 回答 2

2

尝试这个。我认为这对你有帮助。

var brandView = Ti.UI.createScrollView({  
    height      : Ti.UI.FILL,
    width       : Ti.UI.FILL,
    contentHeight : "auto",
    backgroundColor : "transparent",
    layout      : "horizontal",
    horizontalBounce :false,
});


while(rows.isValidRow()) {
     var dynamicButton = Ti.UI.createButton({
        width: 10,
        height: 10,
        top: 10,
        left: 10,
        title: rows.fieldByName('name');
    });
    brandView.add(dynamicButton);

    rows.next();
}
于 2013-01-19T14:04:26.087 回答
0

将您的品牌视图嵌套在一个滚动视图中,否则它只会水平滚动,如果您希望您的按钮在屏幕中居中,请不要设置left属性,只需设置top属性即可。此外,textAlignTitanium.UI.View.

这是一个填充整个屏幕、向网格添加按钮、居中并嵌套在滚动视图中的示例。

var scroller =  Ti.UI.createScrollView({
    height: Ti.UI.FILL,
    width: Ti.UI.FILL,
});
var brandView = Ti.UI.createView({  
    width: Ti.UI.FILL,
    height: Ti.UI.FILL,
    top: 0,
    layout: 'horizontal',
    textAlign: 'center'
});


while(rows.isValidRow()) {
     var dynamicButton = Ti.UI.createButton({
        width: 10,
        height: 10,
        top: 10,
        left: 10,
        title: rows.fieldByName('name');
    });
    view.add(dynamicButton);

    rows.next();
}

scroller.add(brandView);
于 2013-01-19T14:28:14.983 回答