Android onTouch com onClick e onLongClick

Eu tenho uma exibição personalizada que funciona como um botão. Quero alterar o plano de fundo quando o usuário pressioná-lo, reverter o plano de fundo para o original quando o usuário move o dedo para fora ou solta-o e também quero manipular eventos onClick / onLongClick. O problema é que o onTouch exige que eu retorne true paraACTION_DOWN ou ele não me enviará oACTION_UP evento. Mas se eu retornar verdadeiro oonClick ouvinte não vai funciona

Eu pensei que tinha resolvido isso retornando false no onTouch e registrando-se no onClick - de alguma forma funcionou, mas foi meio contra os documentos. Acabei de receber uma mensagem de um usuário me dizendo que ele não pode clicar muito no botão, então estou me perguntando o que há de errado aqui.

Parte do código atual:

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 else in code
setOnTouchListener(this);
setOnClickListener(this);
setOnLongClickListener(this);

Como faço para que eles funcionem juntos corretamente?

Desde já, obrigad

questionAnswers(1)

yourAnswerToTheQuestion