在ListView中触屏时Android高亮显示

在ListView中触屏时Android高亮显示,android,listview,Android,Listview,我在谷歌上搜索了几个小时,似乎有很多问题,有些问题的答案是公认的,但这些问题没有意义 我有一个ListView,我希望在触摸时突出显示一个项目,但是如果用户移动手指,并且没有“完成”触摸(抬起时手指在视图之外),那么突出显示应该消失 如果我试图通过在我的视图中显示以下内容来使用触摸: onTouch(View view, MotionEvent ev) { ....logic //return false so this view keeps consuming the touc

我在谷歌上搜索了几个小时,似乎有很多问题,有些问题的答案是公认的,但这些问题没有意义

我有一个ListView,我希望在触摸时突出显示一个项目,但是如果用户移动手指,并且没有“完成”触摸(抬起时手指在视图之外),那么突出显示应该消失

如果我试图通过在我的
视图中显示以下内容来使用触摸:

onTouch(View view, MotionEvent ev) {

   ....logic

   //return false so this view keeps consuming the touches
   return false;

}
触摸从未被传播到
列表视图
,而
onItemClick
从未被调用。我可以让我的适配器作为所有视图的侦听器,并将“完整”触摸事件传递给适配器,适配器会将其传递回
ListView
,然后再将其传递给任何人,这样做似乎很可笑

作为记录,我尝试执行的突出显示是一个中等复杂的突出显示(涉及更改多个动态子视图的背景,因此我不能只使用
statedawable
…至少我不这么认为,
statedawables
处理多个子视图吗

iOS在他们的
UITableViewDelegate
中非常简单地处理了这个问题,这在android上太难了,这似乎很疯狂,我肯定错过了什么。非常感谢任何帮助。

  • 在列表项上使用选择器
在res/drawable中定义选择器“item_sel.xml”,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/my_highlight_color" android:state_pressed="true"/>
    <item android:drawable="@color/my_default_color"/>
</selector>

你应该很乐意从这里开始。

为什么不使用一个简单的选择器呢?吉尔,我对Android开发还很陌生。也许我可以,我希望你的评论有一个链接、示例,或者至少有一个详细说明。我想我不能,因为“可绘制的”由于需要突出显示的子视图的动态特性,将无法定义,但我愿意接受建议。我正在寻找的是
duplicateParentState
属性。该属性与选择器相结合,使其适合我。正如我所说,我对安卓非常陌生,仍在尝试找出所有内容在文档中查找
duplicateParentState
,这是一个令人兴奋的时刻
 android:background="@drawable/item_sel.xml"