2

我正在使用 Appcelerator Titanium 并想制作一个 Android 应用程序。我创建了一个有 4 行的 TableView。我想在每行中放置 3 个标签,并且我希望我的标签均匀分布。(第一个标签必须在左边,第二个在中间,第三个在右边。)谢谢。

4

3 回答 3

1

对于左、中、右,您可以使用相对定位和文本对齐来非常简单地制作行。无论当前屏幕有多宽(即,这适用于平板电脑、手机、电视等),这种方法都能很好地工作。

var win = Ti.UI.createWindow({
    backgroundColor: '#fff'
});

var rows = [];

for (var i = 0; i < 10; i++) {
    var row = Ti.UI.createTableViewRow();
    row.add(Ti.UI.createLabel({
        text: 'Left ' + i, textAlign: 'left',
        color: '#000',
        left: 10
    }));
    row.add(Ti.UI.createLabel({
        text: 'Center ' + i, textAlign: 'center',
        color: '#000'
    }));
    row.add(Ti.UI.createLabel({
        text: 'Right ' + i, textAlign: 'right',
        color: '#000',
        right: 10
    }));
    rows.push(row);
}

win.add(Ti.UI.createTableView({
    data: rows
}));

win.open();

另一种选择是使用百分比宽度,例如left: '0%', width: '33%', thenleft: '33%', width: '33%'等。

或者你可以说第一个标签是 from left: 0, width: 200。第二个是left: 200, width: 50,第三个是从left: 250, right: 0。这将为您提供第三个弹性标签,因此它可以占用所有空间。

另一种选择(我不建议您采用)是Ti.Platform.displayCaps.platformWidth基于此使用和定位行元素。但这对于方向变化来说是非常脆弱的。

这完全取决于您的内容。有了这些,您应该能够处理您的特定用例。

于 2012-06-25T19:18:41.570 回答
1

这是我最近解决这个问题的方法。每行内有 3 个单独的视图和标签。这对我来说效果很好!所有这些都基于百分比,因此它应该适用于所有分辨率。祝你好运!

for (var i = 0; i < 4; i++) {
var row = Ti.UI.createTableViewRow({
  height: 'auto',
});
  var view1 = Ti.UI.createView({
  left : 0,
  width : "33.33%",
  backgroundColor:'red',
  height:40
  });
var label1 = Ti.UI.createLabel({
  text: 'here',
  color:"#fff",
  textAlign: Ti.UI.TEXT_ALIGNMENT_LEFT    

});

view1.add(label1);
  var view2 = Ti.UI.createView({
  left : "33.33%",
  width : "33.33%",
  backgroundColor : "white",
  height:40 
  });
var label2 = Ti.UI.createLabel({
  text: 'there',
  color:"#fff"    
});
view2.add(label2);

var view3 = Ti.UI.createView({
  left : "66.66%",
  width : "33.33%",
  backgroundColor: "blue",
  height:40          
  });
var label3 = Ti.UI.createLabel({
  text: 'Everywhere',
  color:"#fff"        
});
view3.add(label3);

row.add(view1);
row.add(view2);
row.add(view3);

}

于 2012-06-26T15:33:58.447 回答
0

试试这个代码。

var win = Ti.UI.createWindow({

});

var table = Ti.UI.createTableView({
    backgroundColor:'blue',
    top:50,
    height : 160
});

win.add(table);

var data = [];

for (var i = 0; i < 4; i++) {

    var row = Ti.UI.createTableViewRow({
        height : 40
    });

    var label1 = Ti.UI.createLabel({
        text : 'label1',
        top : 5,
        left : 10,
        width : 80,
        height : 30
    });

    row.add(label1);

    var label2 = Ti.UI.createLabel({
        text : 'label2',
        top : 5,
        left : 130,
        width : 80,
        height : 30
    });

    row.add(label2);

    var label3 = Ti.UI.createLabel({
        text : 'label3',
        top : 0,
        left : 240,
        width : 80,
        height : 30
    });

    row.add(label3);

    data.push(row);
}

table.data = data;

win.open();

好运..

于 2012-06-25T13:18:42.980 回答