所以我在列表视图上有一个选择器,其中每行有2 text views
,每个文本视图都有另一个同步选择器(相同状态的不同drawable:activated
和{{1} })与列表中的那个。我的逻辑是当我在列表视图中检测到某个项目时,我会暂时更改该视图的背景颜色,并在500ms后将其设置回透明状态。
但是,当它有时重置时,子视图的按下状态设置为true,有时两种方式视图都没有正确的bg,但内部pressed
总是对应于text views
,即使按下国家是错误的。
我似乎无法弄清楚如何纠正这种行为。非常感谢任何帮助,这件事让我疯狂。
我已经尝试清除没有帮助的选择,我甚至试图明确强制子视图为其激活状态设置为false,并且按下也不做goo的状态。我真的用完了这个选项。
答案 0 :(得分:0)
因此,在花了很多时间分析AbsListView
幕后发生的事情之后,我找到了解决这个问题的方法。首先是关于引起这个问题的问题,AbsListView
有8个运动检测状态,即 -
当ACTION_UP
事件被调度到列表视图时,touchMode
被卡在(2)和(5)之间,导致它记住{{1}上的按下状态这导致了不正确的结果,即即使在动作完成时,按下的状态也是可见的。
由于我始终从motionView(Child view)
向TouchListener
发送活动,我无法清楚地知道为什么会出现这个问题。
无论如何现在为这种情况下的工作 -
当我的ListView
识别出一个手势时,它会返回true,所以我只需要GestureDetector
返回true,只需将GestureDetector
的操作更改为MotionEvent
并将其发送到ACTION_CANCEL
并解决问题。