Я пытаюсь включить перетаскивание изображений после того, как изображение было удержано в течение некоторого времени (длинный щелчок).
Таким образом, перетаскивание работает отлично (onTouch ACTION_DOWN
/ ACTION_MOVE
/ ACTION_UP
), однако мешает мне обнаружить View.OnLongClick
. Когда я удаляю onTouch
, OnLongClick
успешно обнаружен.
Как я могу заставить этих двух слушателей работать бок о бок?
OnCreate:
{
editPhoto1.setOnTouchListener(this)
editPhoto2.setOnTouchListener(this)
editPhoto3.setOnTouchListener(this)
editPhoto1.isLongClickable = true
editPhoto2.isLongClickable = true
editPhoto3.isLongClickable = true
editPhoto1.setOnLongClickListener(this)
editPhoto2.setOnLongClickListener(this)
editPhoto3.setOnLongClickListener(this)
}
onLongClick
override fun onLongClick(v: View?): Boolean {
Log.d(TAG, "LongClick") // doesn't fire
when (v){
is CircleImageView -> {
v.elevation = 20f
v.borderColor = ContextCompat.getColor(this, R.color.colorPrimary)
ready = true
}
}
return true
}
onTouch
override fun onTouch(v: View?, event: MotionEvent?): Boolean {
if (v is CircleImageView){
when (event?.action){
ACTION_DOWN -> {
v.alpha = 0.7f
}
ACTION_MOVE -> {
if (!ready) return false
...
}
return true
}
Есть идеи?