Android onTouch с помощью onClick и onLongClick

У меня есть пользовательский вид, который действует как кнопка. Я хочу изменить фон, когда пользователь нажимает его, вернуть фон к исходному, когда пользователь перемещает палец наружу или отпустить его, и я также хочу обрабатывать события onClick / onLongClick. Проблема в том, что onTouch требует от меня вернуть true дляACTION_DOWN или он не отправит мнеACTION_UP мероприятие. Но если я верну истинуonClick слушатель не будет работать.

Я думал, что решил эту проблему, вернув false в onTouch и зарегистрировав 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 else in code
setOnTouchListener(this);
setOnClickListener(this);
setOnLongClickListener(this);

Как мне заставить их работать вместе правильно?

заранее спасибо

Ответы на вопрос(1)

Ваш ответ на вопрос