@dev0dev

Click view работает не так как нужно, как исправить?

Всем привет
<ScrollView>
  <HorizontalScrollView>
    <TableLayout>
    </TableLayout> 
  </HorizontalScrollView>
</ScrollView>


Есть вот такой код
MainActivity
for (int i = 0; i < 10; i++) {
            TableRow tableRow = new TableRow(this);
            for (int j = 0; j < 10; j++) {
               ImageView img = new ImageView(this);
               ....
               tableRow.addView(img);
            }
            tableLayout.addView(tableRow);
}

Так же я переопределяю метод в Activity
@Override
    public boolean onTouchEvent(MotionEvent event) {
        float curX, curY;
            switch (event.getAction()) {
                case ACTION_DOWN:
                    mx = event.getX();
                    my = event.getY();
                    break;
                case MotionEvent.ACTION_MOVE:
                    curX = event.getX();
                    curY = event.getY();
                    vScroll.scrollBy((int) (mx - curX), (int) (my - curY));
                    hScroll.scrollBy((int) (mx - curX), (int) (my - curY));
                    mx = curX;
                    my = curY;
                    break;
                case MotionEvent.ACTION_UP:
                    curX = event.getX();
                    curY = event.getY();
                    vScroll.scrollBy((int) (mx - curX), (int) (my - curY));
                    hScroll.scrollBy((int) (mx - curX), (int) (my - curY));
                    break;
            }
        return true;
    }


Так я реализовал вертикальный и горизонтальный скрол и все работает хорошо если элементы не вмещаются на экран то появляются скролы и могу листать и верх и вниз и в любом направлении.
Но тут появляется проблема, если я на ImageView вешаю событие клик,
gifImageView.setOnClickListener
то при скроле отбрасывает в разные места то есть плавного нет скрола как без события клик (если его не ставить)
я так понимаю проблема в OnTouchListener самого ImageView, если создать свою view от ImageView и переопределить метод вот так onTouchEvent
@Override
        public boolean onTouchEvent(MotionEvent ev) {
            return false;
        }

то скрол работает как надо но click не работает, как можно решить ? я получается в tableLayout добавляю 100 динамических ImageView и когда я ставлю событие клик я чувствую что система подвисает что ли, без клика все плавно работает но нужен клик, чтобы понять по какой картинке кликнули
как вообще такое решить можно ?
Спасибо
  • Вопрос задан
  • 72 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы