Я не получаю ACTION_DOWN в ScrollView

#android #ontouchlistener #motionevent

#Android #ontouchlistener #событие движения

Вопрос:

Я получаю вид прокрутки, а внутри него некоторую линейную компоновку с ImageView.

     <ScrollView
        android:layout_weight="41"
        android:layout_width="0dip"
        android:layout_height="match_parent"
        android:background="@color/light_red_zone"
        android:id="@ id/scrl_pass"
        android:clickable="true"
        android:layout_gravity="center">

        <LinearLayout
            android:id="@ id/lytPass"
            android:background="@color/light_red_zone"
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="left" />
    </ScrollView>
 

Я добавляю ImageView динамически внутри LinearLayout, и у него есть слушатель

                     img1.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            savelog(new Dat_Log_DA(id_tile, Long.toString(System.currentTimeMillis()), id_configurazione));
                            if (semaphoreAudio.tryAcquire()) {
                                play(m1);
                            }
                        }
                    });
 

это просто запускает медиаплеер при касании изображений.

Затем мне нужно получить событие движения в режиме прокрутки, поэтому я добавляю прослушиватель касания в режим прокрутки

  scrl_pass = (ScrollView) findViewById(R.id.scrl_pass);scrl_pass.setOnTouchListener(new View.OnTouchListener() {
        private float mY = 0;
        private static final String tag = "SCROLL VIEW";

        @Override
        public boolean onTouch(View v, MotionEvent motionEvent) {

            Log.d(tag, "ACTION "   motionEvent.getActionMasked());
            if ((motionEvent.getActionMasked() == MotionEvent.ACTION_DOWN) || (motionEvent.getActionMasked() == MotionEvent.ACTION_POINTER_DOWN)) {
                mY = motionEvent.getY();
                Log.d(tag, "ACTION DOWN "   mY);
            } else if ((motionEvent.getActionMasked() == MotionEvent.ACTION_UP) || (motionEvent.getActionMasked() == MotionEvent.ACTION_POINTER_UP)) {
                Log.d(tag, "Action da "   mY   " a "   motionEvent.getY());
                float currentPosition = scrl_pass.getScrollX();
            }

            return false;
        }
    });
 

проблема в том, что я получаю ACTION_MOVE (id = 2) и ACTION_UP (id = 1), но я не получаю ACTION_DOWN, если он выполняется в одном из этих imageviews

Комментарии:

1. Есть ли сенсорный прослушиватель и для дочерних элементов (линейный макет или ImageView)?

2. нет, в ImageView просто OnClickListener

3. Можете ли вы реализовать прослушиватель касания в ImageView и посмотреть, улавливает ли он действие ВНИЗ?

4. Я сделал, и в ImageView я могу перехватить действие ВНИЗ

5. Я пробовал, но запускает бесконечный цикл