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);
Как мне заставить их работать вместе правильно?
заранее спасибо