Tôi có chế độ xem tùy chỉnh hoạt động như một nút. Tôi muốn thay đổi nền khi người dùng nhấn vào nó, hoàn nguyên nền ban đầu khi người dùng di chuyển ngón tay ra ngoài hoặc nhả ngón tay ra và tôi cũng muốn xử lý các sự kiện onClick/onLongClick. Vấn đề là onTouch yêu cầu tôi trả lại giá trị đúng cho ACTION_DOWN
hoặc nó sẽ không gửi cho tôi sự kiện ACTION_UP
. Nhưng nếu tôi trả lại đúng, người nghe onClick
sẽ không hoạt động.Android onTouch với onClick và onLongClick
Tôi nghĩ rằng tôi đã giải quyết nó bằng cách trả về false trong onTouch và đăng ký onClick - nó bằng cách nào đó đã hoạt động, nhưng lại chống lại các tài liệu. Tôi vừa nhận được một tin nhắn từ một người sử dụng nói với tôi rằng anh ấy không thể bấm nút lâu, vì vậy tôi tự hỏi có gì sai ở đây.
Một phần của mã hiện tại:
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);
Làm thế nào để làm cho họ làm việc cùng nhau một cách chính xác?
Cảm ơn trước