2014-05-17 25 views
5

Ich würde gerne wissen, ist es möglich zu ändern (in Support Library) Hintergrundfarbe dynamisch nach ausgewählten Seite in Viewpager oder ausgewählten Aktionsleiste Tabs. Ich habe es mit folgendem Code versucht. Aber es funktioniert nicht. Bitte helfen Sie.Ändern ActionBar Hintergrundfarbe Dynamisch

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

Zum eineineeines in onPageSelected macht einen Toast welche wird, welche Position gezeigt hast du wahrscheinlich geklickt, kann es falsche Position zeigen – user3465277

+0

hatte ich mit Toast getestet. Die Position ist korrigiert. Ich habe nur drei Seiten in ViewPager. –

Antwort

5

Bitte versuchen Sie es wie diese

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

Normalerweise funktioniert dieser Code. Aber wenn es in die onPageSelected (int position) -Funktion von mViewPager gestellt wird, funktioniert es nicht. Auf Seite in Viewpager geändert, ändert sich die Hintergrundfarbe der Aktionsleiste zu weiß. –

+1

Das hat funktioniert, aber was ist mit der dynamischen Änderung der statusBar-Farbe? –

-1

so etwas wie dieses Fabrikat:

  actionBar.setBackgroundDrawable(Color.BLACK); 

Es ist der einfachste Weg,

+1

Dies wird nicht funktionieren - setBackgroundDrawable() benötigt eine Drawable-Referenz nicht ein * int *. – goRGon

Verwandte Themen