2017-10-05 10 views
0

Je dois modifier la couleur de l'en-tête TabLayout par programme. Il ressemble à ceci: screenshot_1Comment modifier la couleur de l'en-tête TabLayout par programmation?

Et quand je clique sur Pause, il devrait changer de couleur en gris. Je le fais comme ceci:

private void initUIComponents() { 
    final Toolbar toolbar = findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    mBtnPause = findViewById(R.id.btn_pause); 
    mBtnPause.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View view) { 
     Toast.makeText(MainActivity.this, "Pause is clicked", Toast.LENGTH_SHORT).show(); 
     toolbar.setBackgroundColor(getResources().getColor(R.color.darkGrey)); 
     toolbar.setTitle("Your Wi-Fi is paused"); 
     } 
    }); 

    mViewPager = findViewById(R.id.viewpager); 
    mTabLayout = findViewById(R.id.tabs); 
    mTabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 

    mViewPager.setAdapter(new MenuCategoryAdapter(this, getSupportFragmentManager())); 
    mTabLayout.setupWithViewPager(mViewPager); 

    for (int i = 0; i < mTabLayout.getTabCount(); i++) { 
     mTabLayout.getTabAt(i).setIcon(R.mipmap.ic_launcher); 
    } 
    } 

Mais le problème est que je ne peux changer Toolbar couleur et ne peut pas trouver une méthode pour changer TabLayout tête. La méthode mTabLayout.setBackgroud ne fonctionne pas pour moi.

Ceci lève NullPointerException: mTabLayout.getTabAt (i) .getCustomView(). SetBackgroundColor (getResources(). GetColor (R.color.darkGrey));

Désolé pour la duplication possible, original - ici vous pouvez trouver la réponse.

+2

double possible de [Changer la couleur d'arrière-plan d'un onglet dans TabLayout (Android bibliothèque de support de conception) ne pas occuper tout l'espace de l'onglet ] (https://stackoverflow.com/questions/32611885/changing-the-background-color-of-a-tab-in-tablayout-android-design-support-libr) – akhilesh0707

+0

'tabLayout' en-tête xml code –

Répondre