我有一个自定义视图,就像一个按钮.我想在用户按下它时更改背景,当用户将手指移到外面或释放它时将背景恢复为原始状态,我还想处理onClick/onLongClick事件.问题是onTouch要求我返回true,ACTION_DOWN否则它不会向我发送ACTION_UP事件.但如果我回归真实,那么onClick听众将无法工作.
我以为我通过在onTouch中返回false并注册onClick来解决它 - 它以某种方式工作,但是有点反对文档.我刚收到用户的消息,告诉我他无法长按此按钮,所以我想知道这里有什么问题.
当前代码的一部分:
public boolean onTouch(View v, MotionEvent evt)
{
switch (evt.getAction())
{
case MotionEvent.ACTION_DOWN:
{
setSelection(true); // it just change the background
break;
}
case MotionEvent.ACTION_CANCEL:
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_OUTSIDE:
{
setSelection(false); // it just change the background
break;
}
}
return false;
}
public void onClick(View v)
{
// some other code here
}
public boolean onLongClick(View view)
{
// just showing a Toast here
return false;
}
// somewhere …Run Code Online (Sandbox Code Playgroud)