OnLongClickListener при просмотре изображения не работает в реализации заголовка чата facebook

Я попытался создать головной сервис чата facebook. со ссылкой на эту ссылку . Метод OnTouch работает нормально. При длительном нажатии на изображение я хочу удалить изображение из текущего представления. Я использовал OnLongClickListener(), он не работает и не показывает ошибок. Как удалить изображение. При длительном нажатии.


person Ram    schedule 22.04.2015    source источник
comment
попробуйте добавить longClickable=true в представление изображения   -  person Arturs Vancans    schedule 22.04.2015
comment
@Arturs, спасибо за ответ. Я добавил, что в моем коде все еще не работает.   -  person Ram    schedule 22.04.2015


Ответы (2)


Кажется, вы переопределяете сенсорный прослушиватель.

chatHead.setOnTouchListener(new View.OnTouchListener() {
  private int initialX;
  private int initialY;
  private float initialTouchX;
  private float initialTouchY;

  @Override public boolean onTouch(View v, MotionEvent event) {
    switch (event.getAction()) {
      case MotionEvent.ACTION_DOWN:
        initialX = params.x;
        initialY = params.y;
        initialTouchX = event.getRawX();
        initialTouchY = event.getRawY();
        return true;
      case MotionEvent.ACTION_UP:
        return true;
      case MotionEvent.ACTION_MOVE:
        params.x = initialX + (int) (event.getRawX() - initialTouchX);
        params.y = initialY + (int) (event.getRawY() - initialTouchY);
        windowManager.updateViewLayout(chatHead, params);
        return true;
    }
    return false;
  }
});

Поэтому вам нужно реализовать длинный щелчок вручную.

Псевдокод для этого будет выглядеть примерно так:

 case MotionEvent.ACTION_DOWN:
        initialX = params.x;
        initialY = params.y;
        initialTouchX = event.getRawX();
        initialTouchY = event.getRawY();
        action_down_time = System.currentTimeMillis()
        return true;
 case MotionEvent.ACTION_UP:
        //long click triggered if held for at least 2 sec (2000ms)
        if (System.currentTimeMillis() - action_down_time > 2*1000) {
          your_long_click_callback_function()
        }
        return true;

РЕДАКТИРОВАТЬ: вы также можете проверить тайминги в ACTION_MOVE.

person Arturs Vancans    schedule 22.04.2015
comment
Я. Я переопределяю сенсорный прослушиватель. Теперь он работает нормально. - person Ram; 29.04.2015

Попробуйте добавить эти строки при инициализации вашего ImageView

imageView.setLongClickable(true);
imageView.setClickable(true);

ИЛИ в XML-файле вашего макета

 android:longClickable="true"

Эти строки должны включать OnLongClick, если он не включен.

Ссылка: ссылка и ссылка< /а>

person Sami Eltamawy    schedule 22.04.2015