2

我将 viewpager2 与 fragmentStateAdapter 一起使用。此外,将页面转换器设置为 DepthPageTransformation(转换按我想要的方式正常工作)

但是当我向上滑动页面时,该片段上的点击事件在双击时起作用(事件在点击两次后起作用)

如果我从 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

1

上一个片段的点击在向上滑动时被禁用,因为我正在更新我的片段,该片段是从 onPageSelected() 侦听器添加到视图寻呼机中的,所以这使得按钮在双击时工作。

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

也许我们不能从这个监听器更新我们的片段。

于 2019-10-23T09:27:32.143 回答