2016-04-04 13 views
4

Wie ändert sich die Android-Google Play-App dynamisch, wenn Nutzer auf AppBarlayout klicken?Laufzeitänderung der AppBarLayout-Farbe

enter image description here API 21 Lollipop Ich habe versucht, die folgenden

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> 

Antwort

0

Sie müssen die Registerkarte Position erhalten, um die Farbe zu manipulieren. Hier ist das Beispiel.

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; 
      } 
     } 
+0

geschätzt, werde versuchen, sobald ich die kritischen stuffed settled und wird ein tick posten, wenn es funktioniert. Danke vielmals. – Jai

+0

Darf ich wissen, warum Sie eine Mischung aus setBackgroundColor und setBackgroundResource verwenden? Ich testete beide scheint es für beide zu funktionieren. Aber unter API 21 hat die Google Play App eine Art Animationseffekt. Immer noch nicht genau gleich. ich denke, Google Play App erreicht es über die Anwendung Android: theme = "@ style/xxx ich denke. – Jai