2012-06-09 225 views
1

我正在使用Titanium並嘗試在tableview行內嵌入textarea。 textarea需要動態增加高度,以及tableview行。我知道它應該需要一些計算,但我不知道算法。有人可以提供一些指點嗎?Titanium Appcelerator動態TextArea高度增加

很多謝謝。

到目前爲止的代碼:

var win = Ti.UI.createWindow({ 
    title: 'My Message' 
}); 

var tableview = Ti.UI.createTableView({ 
    height: 'auto', 
    layout: 'vertical', 
    style:Titanium.UI.iPhone.TableViewStyle.GROUPED, 
    headerTitle:'Message', 
}); 

var tf = Ti.UI.createTextField({ 
    width: 200, 
    top: 10, 
    borderStyle: Ti.UI.INPUT_BORDERSTYLE_ROUNDED 
}); 

var rowTo = Ti.UI.createTableViewRow({ 
    height: 'auto' 
}); 


var ta = Ti.UI.createTextArea({ 
    height: 'auto', 
    font: [{fontSize: 11}], 
    top: 0, 
    bottom: 20, 
    width: 250, 
    height: 50, 
    backgroundColor: 'green' 
}); 
var rowMsg = Ti.UI.createTableViewRow({ 
    height: 'auto' 
}); 

rowTo.add(tf); 
rowMsg.add(ta); 

tableview.appendRow(rowTo); 
tableview.appendRow(rowMsg); 

win.add(tableview); 
win.open(); 

回答

1

使用標籤和它的高度分配給textarea的。在'更改'textArea的eventListener中,更新textArea相對於標籤高度的高度。看到下面的代碼,我改變了它。

var win = Ti.UI.createWindow({ 
    title : 'My Message' 
}); 

var tableview = Ti.UI.createTableView({ 
    height : 'auto', 
    layout : 'vertical', 
    style : Titanium.UI.iPhone.TableViewStyle.GROUPED, 
    headerTitle : 'Message', 
}); 

var tf = Ti.UI.createTextField({ 
    width : 200, 
    top : 10, 
    borderStyle : Ti.UI.INPUT_BORDERSTYLE_ROUNDED 
}); 

var rowTo = Ti.UI.createTableViewRow({ 
    height : 'auto' 
}); 

var ta = Ti.UI.createTextArea({ 
    font : [{ 
     fontSize : 11 
    }], 
    top : 0, 
    width : 250, 
    scrollable : false, 
    backgroundColor : 'green', 
    height : 'auto' 
}); 

var label = Ti.UI.createLabel({ 
    width : 250, 
    font : [{ 
     fontSize : 11 
    }], 
    height : 'auto', 
    text : ta.value, 
    visible : false 
}); 

var rowMsg = Ti.UI.createTableViewRow({ 
    height : 'auto' 
}); 

ta.addEventListener('change', function(e) { 
    label.text = e.value; 
    ta.height = label.height; 
    rowMsg.height = label.height; 
}); 

rowMsg.add(label); 
rowTo.add(tf); 
rowMsg.add(ta); 

tableview.appendRow(rowTo); 
tableview.appendRow(rowMsg); 

win.add(tableview); 

win.open();