PagerTabStrip改变第一和第一的颜色最后一个标签

时间:2014-06-26 11:38:35

标签: android tabs android-viewpager

我有一个ViewPager和一个PagerTabStrip,我想要淡出第一个可见的和最后一个可见的标签,就像这样 enter image description here

但我还没有解决它如何实现的问题。首先我有一个问题 - 如何知道标签是最后还是第一个?如何检测是否正在显示屏幕上的标签?或者也许你 能引导我走向正确的道路吗?

1 个答案:

答案 0 :(得分:1)

因此,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,具体取决于positionOffset。

相关问题