2

私はfragmentStateAdapterでviewpager2を使用しています。また、ページトランスフォーマーをDepthPageTransformationとして設定します(トランジションは希望どおりに正しく機能しています)

しかし、ページを上にスワイプすると、そのフラグメントのオンクリックイベントはダブルクリックで機能します(イベントは2回クリックした後に機能します)

viewPager から pageTransformation を削除すると、正常に動作します。そのため、変換がクリックイベントの問題を引き起こしている理由を理解できません。

    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());

ページが上にスワイプされたときに、ボタンクリックイベントがワンクリックで機能するようにしたい。

4

1 に答える 1