我的主要活动中有一个列表视图,其中包含全尺寸图像列表。我试图在列表视图的图像视图上实现onTouchListener,以获取用户触摸的点。我通过在自定义适配器的get View方法中为列表视图实现onTouchListener来解决问题。但当我触摸屏幕滚动列表时,它仍然在滚动列表时给我点数。但我不想在滚动列表时调用onTouchListener。我怎么能这样做。
答案 0 :(得分:1)
你可以尝试这个,这可能有效
float posX, posY;
imageView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN){
posX = event.getX();
posY = event.getY();
}
if (event.getAction() == MotionEvent.ACTION_UP){
if (((posX >= event.getX() && posX <= event.getX() + 10) || (posX <= event
.getX() && posX >= event.getX() - 10))
&& ((posY >= event.getY() && posY <= event.getY() + 10) || (posY <= event
.getY() && posY >= event.getY() - 10))){
//Do your thing
}
}
return true;
}
});
答案 1 :(得分:0)
我认为正确的方法是实施onClickListener
而不是onTouchListener
。
是的,原因是当用户只想滚动View
时会触及ListView
。
答案 2 :(得分:0)
覆盖此方法,并根据您的要求完成。
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if (isScrooling) {
return super.onInterceptTouchEvent(ev);
} else {
return false;
}
}