2014-05-17 15 views
5

Mi piacerebbe sapere se è possibile modificare ActionBar (in Support Library) Colore sfondo dinamicamente in base alla pagina selezionata in viewpager o schede della barra delle azioni selezionate. Ho provato con il seguente codice. Ma non funziona. Per favore aiuto.Cambia azioneBar Colore sfondo dinamicamente

mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { 

    @Override 

    public void onPageSelected(int position) { 

     actionBar.setSelectedNavigationItem(position);  

     if(position == 0){ 
      actionBar.setBackgroundDrawable(new ColorDrawable(Color.GREEN)); 
     }else if(position == 1){ 
      actionBar.setBackgroundDrawable(new ColorDrawable(Color.BLUE)); 
     }else{ 
      actionBar.setBackgroundDrawable(new ColorDrawable(Color.YELLOW)); 
     } 

    } 
}); 
+0

In primo luogo fare in onPageSelected un brindisi quale sarà mostrato quale posizione hai fatto clic in modo propizio può mostrare la posizione errata – user3465277

+0

che avevo provato con Toast. La posizione è corretta. Ho solo tre pagine in ViewPager. –

risposta

5

Si prega di provare come questo

ColorDrawable colorDrawable = new ColorDrawable(Color.parseColor("#ffFEBB31")); 
actionBar.setBackgroundDrawable(colorDrawable); 
+0

Normalmente, questo codice funziona. Ma, quando lo metti in funzione onPageSelected (int position) di mViewPager, non funziona. Nella pagina in viewpager è cambiato, il colore di sfondo della barra delle azioni diventa bianco. –

+1

Questo ha funzionato, ma per quanto riguarda il cambiamento dinamico del colore StatusBar? –

-1

fare qualcosa di simile:

  actionBar.setBackgroundDrawable(Color.BLACK); 

E 'il modo più semplice

+1

Questo non funzionerà - setBackgroundDrawable() ha bisogno di un riferimento Drawable non di * int *. – goRGon

Problemi correlati