2013-04-07 200 views
1


是否可以在鈦中添加多個視圖到ScrollView?所以可以說我有以下幾種:Titanium一次添加多個視圖到一個滾動視圖?

var scrollView = Titanium.UI.createScrollView(); 
var views = []; 

var view1 = Titanium.UI.createView(); 
views.push(view1); 

var view2 = Titanium.UI.createView(); 
views.push(view2); 

scrollView.add(views); 

window.add(scrollView); 

以上是否會工作?如果不是需要做什麼才能使其發揮作用?

+0

是它的工作....意見=滾動視圖和所有其他子視圖到您的scrollView ...並最終將其添加到窗口。 – Thalaivar 2013-04-07 03:24:57

回答

0

根據他們的documentation這應該不起作用。 (之前從未嘗試過)。但是你可以做這樣的事情:

views.forEach(function(view) { 
    scrollView.add(view); 
}); 
+0

你的例子確實有效。但我唯一的問題就是它效率不高。比方說,我正在循環70次以上,這會減慢電話速度,使應用程序不能很快響應。總共需要大約半分鐘的時間。所以它看起來像回到了製圖板,並提出了一種不同的方式來有效地做到這一點。 – camelCaseD 2013-04-07 19:17:20

+0

是的,我知道在某些情況下鈦很慢。你有沒有想過使用TableView?在那裏你可以一次設置所有的東西。這可能會更快(尤其是如果所有「行」結構相同,例如Twitter時間軸)。 – 2013-04-07 19:21:29

+0

我一直在想,但我使用的視圖是高度定製的。這將需要更多的工作和混亂來創建一個比我目前使用的「TableView」。如果我們只能創建多個線程/進程來使用。 – camelCaseD 2013-04-07 20:02:36

0

我知道這是有點晚,但其解決方案,我用了這個問題,希望它還是有幫助的。基本上,它涉及到將scrollView的不透明度設置爲0,直到完成加載。這意味着,而不是一次出現1的行,它們全部同時出現,並且可以在您的程序/用戶執行其他操作時在後臺運行。請注意,這只是工作,如果滾動視圖是空的 - 它不添加行到已有的東西在裏面滾動型很好的解決方案:

var sView = Titanium.UI.createScrollView({ 
    //Whatever properties you need for your scrollView 
    opacity: 0, 
}); 

//childViews is an array of all the stuff you'd like to add to sView 
childCount = childViews.length 

//Add a postlayout event to the last childView - this will automatically set the opacity to 1 when the last child is loaded 
childViews[childCount - 1].addEventListener('postlayout', function showScrollView(e){ 
    this.parent.setOpacity(1); 
    this.removeEventListener(showScrollView); 
}); 

//Iteratively add each view in the array to the sView 
for (var x = 0; x < childCount; x++) { 
    sView.add(childViews[x]); 
} 
window.add(sView); 
相關問題