我有一个自定义 ListView,我用 Adaptar 填充。在我的应用程序中,列表中的项目将根据它们的状态而变化,所以我正在更新我的 ImageViews,如下所示:
mStatusIcon = (ImageView) findViewById(R.id.imgStatusIcon);
mStatusIcon.setImageResource(R.drawable.icon_cancel);
到目前为止,一切都很好。问题是我想要在我的布局的某个部分有某种焦点/悬停状态。OnTouchListener()
我已经在View mHitfield
我的布局 xml 中设置了一个。
我可以捕捉到所有相关的动作:ACTION_MOVE
、ACTION_DOWN
和。ACTION_UP
ACTION_CANCEL
问题是当我改变我ImageView mStatusIcon
的下一个动作时,我捕捉到的总是ACTION_CANCEL
.
View mHitfield = (View) findViewById(R.id.outerShape);
mHitfield.setOnTouchListener(new OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
int currentAction = event.getAction();
switch(currentAction)
{
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_MOVE:
// if I comment out these lines I keep receiving all actions
// if I don't, I only receive ACTION_DOWN followed by ACTION_CANCEL
mStatusIcon.setImageResource(R.drawable.icon_download_normal);
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
// if I comment out these lines I keep receiving all actions
// if I don't, I only receive ACTION_DOWN followed by ACTION_CANCEL
mStatusIcon.setImageResource(R.drawable.icon_download_hover);
break;
}
return false;
}
});
有人可以向我解释为什么会发生这种情况以及是否有办法解决这个问题?