2013-01-23 88 views
0

我有一個主/從佈局的平板電腦應用程序,在主面板中有一個用於更改「詳細信息」窗格內容的TableView。我想讓主人的行保持突出顯示,就像在android操作系統設置中一樣。如何永久選擇/突出顯示Titanium Android中的TableView行?

現在我可以做的最好的事情是將backgroundColor設置爲新顏色以響應'click'事件。但是,當我快速點擊時,該行將突出顯示,然後在再次突出顯示前閃爍回常態。我猜這是我關閉手指和backgroundColor發生變化之間的延遲。

tableview.addEventListener('click', function(e) { 
    ... 
    else if (e.rowData.id == 3) { // scan history 
     e.row.backgroundColor = 'blue'; 

這似乎是別人做它的方式:http://developer.appcelerator.com/question/124359/android---tableviews-deselectrow

如果我只是採用了android,而不是鈦:How can I highlight the table row on click ?

回答

1

試試這個。觸摸開始立即被調用,而點擊通常不是。請注意,according to the docs a scroll事件和touch事件不能同時發生在iOS和Android上,所以如果您有'touchstart`偵聽器,您可能還想處理touchcancel事件。

tableview.addEventListener('touchstart', function(e) { 
    ... 
    // Get the source row, and then get its id 
    else if (e.source.id == 3) { // scan history 
     e.row.backgroundColor = 'blue'; 
}); 

編輯: 也許更好的方式做這將是處理touchend事件。這將處理快速水龍頭,用戶滑動到不同的行,以及滾動邊緣情況。

+0

雖然我認爲這將創造一個更快的背景顏色的變化,它有更多的併發症。沒有行數據與touchstart事件一起傳輸,所以我必須找出具有觸摸的x和y座標的行。我也必須處理這樣的情況,即用戶在釋放之前觸摸一行然後滑向另一行。感謝您的建議! –

+0

實際上,您可以通過事件'e'的'source'屬性獲取行數據。也許你想要的是'touchend'事件來處理滑動,但是,請注意,表中的'scroll'事件不能與一行中的'touch'事件同時發生。 –

+0

返回的源對象是tableview,而不是行。我試圖給每個單獨的行添加一個touchend監聽器,但那從來沒有被調用過。有趣的是,每個單獨行上的「單擊」偵聽器確實有效。我總是可以使用x,y來計算tableview touchend事件中的行。再次感謝後續。 –

0

在創建行,請使用:

selectionStyle : "NONE" 

這可以防止上點擊改變顏色/觸摸

並推出自己的事件監聽器來管理什麼時候你的行會突出顯示。

iOS的藍色行選擇的顏色是一樣的東西:「#006EF1」

相關問題