我已经在谷歌上搜了几个小时,SO上有很多问题,一些有被接受的答案,但它们不太好理解。
我有一个ListView,我希望在触摸时高亮显示某个项目,但如果用户移动手指并且没有“完成”触摸(当他们抬起手指时手指在视图之外),则高亮应该消失。
如果我尝试通过在我的View
中包含以下内容来消耗触摸:
onTouch(View view, MotionEvent ev) {
....logic
//return false so this view keeps consuming the touches
return false;
}
触摸事件无法传递到
ListView
,因此onItemClick
永远不会被调用。我可以通过将我的适配器设置为所有视图的侦听器并将“完整”的触摸事件传递给适配器来解决此问题,然后适配器将其传回ListView
,然后再传递给其他人,但这似乎太荒谬了。就记录而言,我正在尝试执行的突出显示是一种相对复杂的方法(涉及更改多个动态子视图的背景色),因此我不能只使用一个
StateDrawable
。..至少我认为不能,StateDrawables
是否适用于多个子视图?iOS可以很简单地在其
UITableViewDelegate
中处理此问题,看起来在Android上如此困难,我一定错过了什么。非常感谢您的帮助。