View.OnLongClick () не работает при реализации onTouch () ACTION_DOWN - PullRequest
0 голосов
/ 05 июня 2019

Я пытаюсь включить перетаскивание изображений после того, как изображение было удержано в течение некоторого времени (длинный щелчок).

Таким образом, перетаскивание работает отлично (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
}

Есть идеи?

1 Ответ

2 голосов
/ 05 июня 2019

Поскольку событие уже используется onTouch. Теоретически, если вы можете вернуть false от прикосновения (не используется для длительного нажатия), оно должно работать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...