1

我有一个带有 Master / Detail 布局的平板电脑应用程序,在 Master 面板中有一个 TableView 可以更改 Detail 窗格的内容。我希望主行在单击时保持突出显示,就像在 android 操作系统设置中一样。

现在我能做的最好的事情就是将 设置backgroundColor为新颜色以响应'click'事件。但是,当我快速点击时,该行会突出显示,然后闪烁恢复正常,然后再次突出显示。我猜这是我抬起手指和背景颜色改变之间的延迟。

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 而不是 Titanium:如何在单击时突出显示表格行?

4

2 回答 2

1

试试这个。touch start 会立即被调用,而 click 通常不会。请注意,根据文档,对于 iOS 和 Android,一个scroll事件和一个事件不能同时发生,因此如果您有一个 `touchstart` 侦听器touch,您可能还想处理该事件。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事件。这将处理快速点击、用户滑动到不同行和滚动边缘情况。

于 2013-01-24T22:44:08.747 回答
1

创建行时,请使用:

selectionStyle : "NONE"

这可以防止它在点击/触摸时改变颜色

并滚动您自己的事件侦听器来准确控制您的行何时突出显示。

iOS 蓝色行选择颜色类似于:“#006EF1”

于 2015-05-18T20:06:03.730 回答