Android AppBarLayout颜色的运行时更改

Android AppBarLayout颜色的运行时更改,android,layout,colors,runtime,appbar,Android,Layout,Colors,Runtime,Appbar,Android Google Play应用程序如何在用户点击AppBarlayout时动态改变颜色 我试过以下方法 tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { setTheme(R.style.AppTheme_2); } }

Android Google Play应用程序如何在用户点击AppBarlayout时动态改变颜色

我试过以下方法

tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener()
{
    @Override
    public void onTabSelected(TabLayout.Tab tab)
    {
        setTheme(R.style.AppTheme_2);
    }
}

<style name="AppTheme_2" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/colorPrimary_2</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark_2</item>
    <item name="colorAccent">@color/colorAccent_2</item>
</style>
tabLayout.setOnTabSelectedListener(新的tabLayout.OnTabSelectedListener()
{
@凌驾
已选择的公共选项卡(TabLayout.Tab)
{
setTheme(R.style.AppTheme_2);
}
}
@颜色/原色2
@颜色/原色深色2
@颜色/颜色重音2

为了操纵颜色,您需要获得选项卡位置。 这是一个例子

 mTabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            Log.e(TAG, String.valueOf(tab.getPosition()));

            switch (tab.getPosition()){
                case 0:
                    mAppBar.setBackgroundResource(R.color.colorPrimary);
                    break;
                case 1:
                    mAppBar.setBackgroundResource(R.color.colorPrimary);
                    break;
                case 2:
                    mAppBar.setBackgroundColor(Color.BLACK);
                    break;
            }
        }

非常感谢,一旦我解决了关键问题,我会再试一次,如果有效的话,我会发布一个勾号。非常感谢。我可以知道为什么你使用setBackgroundColor和setBackgroundResource的混合体吗?我测试了两者,似乎两者都有效。但是在API 21下,Google Play应用程序有某种动画效果。仍然不完全一样。我认为Google Play应用程序是通过android:theme=“@style/xxx”应用程序实现的。