我有一个ViewPager和PagerTabStrip,我想淡出像这样的第一个可见标签和最后一个可见标签


但是我还没有解决方案。首先,我有一个问题-如何知道选项卡是最后还是第一个?如何检测当前屏幕上是否显示了标签?也许你
可以指引我正确的方向?

最佳答案

因此,PagerTabStrip扩展了通用ViewPager。这意味着您可以执行类似的操作以添加淡入淡出效果:

pagerTabStrip.getChildAt(0).setAlpha()


另一个问题是何时调用此方法。添加此代码的最佳位置是您要更改页面的位置:

    viewPager.setOnPageChangeListener(new OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int                 positionOffsetPixels) {
            }

            @Override
            public void onPageSelected(int position) {
                //easiest way to implement it here
                int viewsCount = pagerTabStrip.getChildCount();
                pagerTabStrip.getChildAt(0).setAlpha(.5f);
                pagerTabStrip.getChildAt(1).setAlpha(1); // be sure that next element has properly alpha
                pagerTabStrip.getChildAt(viewsCount - 2).setAlpha(1);
                pagerTabStrip.getChildAt(viewsCount - 1).setAlpha(.5f);
            }

            @Override
            public void onPageScrollStateChanged(int state) {
            }
    });


如果要在用户滚动页面时平滑地更改Alpha,则需要在onPageScrolled()方法中进行更改。您需要根据位置偏移量从0.5到1计算alpha。

10-06 14:46