【问题标题】:Change toolbar and tabs background on tab change更改选项卡时更改工具栏和选项卡背景
【发布时间】:2014-11-10 08:47:09
【问题描述】:

我有一个带有新工具栏(取代 ActionBar)和标签(当前使用PagerSlidingTabStrip)的应用。

我有 3 个选项卡,我想在更改选项卡时翻译颜色。 例如,对于 tab1 有工具栏和标签显示 #ff0000,对于 tab2 #00ff00 和对于 tab3 #0000ff。

【问题讨论】:

    标签: android tabs android-toolbar pagerslidingtabstrip


    【解决方案1】:
    @Override
            public void onPageSelected(int position) {
                if (mPreviousSelectedPage != position) {
                    int currentColor =((MyFragment) mAdapter.getItemAt(position)).getColor();
                    position = mPreviousSelectedPage > position? position - 1; position + 1;
                    if(position < mViewPage.getCount()-1 && position >=0){
                        ValueAnimator colorAnim = ObjectAnimator.ofInt(mToolbar, "backgroundColor", mPreviousColor, currentColor);
                        colorAnim.setDuration(100);
                        colorAnim.setEvaluator(new ArgbEvaluator());
                        colorAnim.start();
                        mPreviousSelectedPage = position;
                        mPreviousColor = currentColor;
                  }
                }
            }
    

    ViewPagerAdapter 中的片段应该有方法getColor(),它将返回与该片段关联的颜色。

    ValueAnimatorArgbEvaluator 会在两种颜色之间做动画。如果要在更多视图中使用颜色,请设置AnimationUpdateListener 并将颜色设置为视图。

    【讨论】: