触摸监听器不工作android
Posted
技术标签:
【中文标题】触摸监听器不工作android【英文标题】:Touch listener not working android 【发布时间】:2011-05-26 05:05:20 【问题描述】:我的 android 应用程序中的触摸侦听器有问题。 OnTouchLIstenr 不适用于视图,即 ACTION_DOWN 在侦听器中表现良好,但 ACTION_UP 没有调用。我不知道发生了什么问题。但是,如果我设置了虚拟点击侦听器,两者都可以正常工作。为什么会这样?
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ImageView image = (ImageView) findViewById(R.id.image);
image.setOnTouchListener(new OnTouchListener()
@Override
public boolean onTouch(View v, MotionEvent event)
ImageView img = (ImageView) v;
int action = event.getAction();
if (action == MotionEvent.ACTION_DOWN)
img.setImageResource(R.drawable.port);
else if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL)
img.setImageResource(R.drawable.bar);
return false;
);
【问题讨论】:
【参考方案1】:您可能会考虑返回“true”,因为您正在处理触摸事件。
Link to a similar question. Answer from adamp, makes sense
【讨论】:
因为您返回 false 意味着您对系统说“没有发生触摸” 在 ACTION_DOWN 事件中,监听器被调用,但他返回一个'false',这意味着监听器在说:“我不想在 ACTION_UP 之前处理任何进一步的触摸事件。我有添加了一个链接,其中对此进行了解释。 @Hellboy 这不是假的! false 表示我不想处理这些事件,堆栈下方的其他一些侦听器(如果有多个视图一个接一个)可以处理。 感谢您的良好回复。这在应用程序中运行良好。【参考方案2】:image.setOnTouchListener(new OnTouchListener()
@Override
public boolean onTouch(View v, MotionEvent event)
ImageView img = (ImageView) v;
int action = event.getAction();
if (action == MotionEvent.ACTION_DOWN)
img.setImageResource(R.drawable.port);
else if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL)
img.setImageResource(R.drawable.bar);
return true;
);
只需替换 return true;
而不是 return false;
并检查
【讨论】:
以上是关于触摸监听器不工作android的主要内容,如果未能解决你的问题,请参考以下文章
Javascript触摸android webview中的事件
更新到 Lollipop 后,Spen 触摸监听器无法正常工作