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

Я использую viewpager2 с FragStateAdapter. Кроме того, установка преобразователя страницы как DepthPageTransformation(переход работает правильно, как я хочу)

Но когда я пролистываю страницы, события клика по этому фрагменту работают по двойному щелчку (событие срабатывает после двойного щелчка по нему)

Если я удаляю pageTransformation из viewPager, то он работает нормально. Таким образом, не в состоянии понять, почему преобразование вызывает проблему события щелчка.

    private static final float MIN_SCALE = 0.75f;
    public void transformPage(@NonNull View view, float position) {
        int pageHeight = view.getHeight();
        if (position < -1) { // [-Infinity,-1)
            // This page is way off-screen to the left.
            view.setAlpha(0f);
            Log.d("batman",position+" <-1");
        } else if (position <= 0) { // [-1,0]
            // Use the default slide transition when moving to the left page
            view.setAlpha(1f);
            view.setTranslationY(0f);
            view.setScaleX(1f);
            view.setScaleY(1f);
            Log.d("batman",position+" <=0");
        } else if (position <= 1) { // (0,1]
            // Fade the page out.
            view.setAlpha(1 - position);
            // Counteract the default slide transition
            view.setTranslationY(pageHeight * -position);
            // Scale the page down (between MIN_SCALE and 1)
            float scaleFactor = MIN_SCALE
                    + (1 - MIN_SCALE) * (1 - Math.abs(position));
            view.setScaleX(scaleFactor);
            view.setScaleY(scaleFactor);
            Log.d("batman",position+" <=1");
        } else { // (1,+Infinity]
            // This page is way off-screen to the right.
            view.setAlpha(0f);
            Log.d("batman",position+" else");
        }
    }
}
HomeFragment(adapter setting):

mAdapter = new ViewPagerAdapter(this);
        setPageChangeListener();
        mViewPager.setAdapter(mAdapter);
      //  mViewPager.setOffscreenPageLimit(3);
        mViewPager.setPageTransformer( new DepthPageTransformer());

Я хочу, чтобы событие нажатия кнопки работало одним щелчком мыши, когда страница сильно ударилась.

0 ответов

Щелчки предыдущего фрагмента отключались при смахивании вверх, потому что я обновлял свой фрагмент, который добавлялся в пейджер просмотра из прослушивателя onPageSelected(), поэтому кнопка работала при двойном щелчке.

@Override
public void onPageSelected(int position) {
    homePresenter.onPageSelected();
    currentPg = position;
}

Возможно, мы не можем обновить наш фрагмент из этого слушателя.

Другие вопросы по тегам