Передача событий прокрутки от дочернего к родительскому - PullRequest
0 голосов
/ 05 марта 2019

Есть ли способ перенести событие прокрутки из дочернего представления в родительское представление прокрутки?

Проблема: изображение имеет функцию щепотки для масштабирования и блокирует все сенсорные события от передачи в родительское представление прокрутки.

Желаемый эффект: хотите перенести событие вертикальной прокрутки в ScrollView.По сути, я не хочу, чтобы ImageView обрабатывал события вертикальной прокрутки.

<ScrollView
android:id="@+id/scroll"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="40dp"
android:clipToPadding="false"
android:paddingBottom="50dp"
android:scrollbars="vertical">
    <ViewPager
    android:id="@+id/list"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="@dimen/five_dp" />

</ScrollView>

А у пейджера есть фрагменты с пользовательским интерфейсом, такие как

<RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_alignParentTop="true"
        android:background="@android:color/transparent"
        android:visibility="visible">

        <ImageView
            android:id="@+id/click_card_image"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_margin="0dp" />
</RelativeLayout>

Вот сенсорный список для ImageView

binding.postImage.setOnTouchListener(new View.OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                int action = event.getAction();

                switch (action) {
                    case MotionEvent.ACTION_DOWN:
                    case MotionEvent.ACTION_UP:
                    case MotionEvent.ACTION_MOVE:
                        ((ScrollView)getActivity().findViewById(R.id.scroll)).requestDisallowInterceptTouchEvent(true);
                        return true;
                    default:
                        return true;
                }
            }
        });

Спасибо!

...