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