2012-08-02 85 views
5

當用戶在導航列表中選擇一個選擇時,我想更改操作欄背景的顏色。從導航列表中更改ActionBar背景顏色代碼

目前,我的代碼如下所示:

@Override 
    public boolean onNavigationItemSelected(int itemPosition, long itemId) { 
     ColorDrawable colorDrawable = new ColorDrawable(); 
     ActionBar actionBar = getActionBar(); 
     if(itemPosition == 0) 
     { 
      colorDrawable.setColor(0xffFEBB31); 
      actionBar.setBackgroundDrawable(colorDrawable); 
      return true; 
     } 
     if(itemPosition == 1) 
     { 
      colorDrawable.setColor(0xff9ACC00); 
      actionBar.setBackgroundDrawable(colorDrawable); 
      return true; 
     } 
     return false; 
    } 

但是,我第一次在導航列表中選擇itemPosition 1,它改變了動作條顏色爲白色。

enter image description here
第二次單擊導航列表中的itemPosition 1時,我沒有問題。

enter image description here
有誰能告訴我爲什麼這是,我該如何解決這個問題?感謝您的幫助!

+0

你有沒有解決這個問題? – 2013-05-07 12:57:17

回答

6

試試這個:

myActivity.invalidateOptionsMenu(); 
10

嘗試使用此代碼:

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

這基本上是同樣的事情,原來的海報要求做,只有選擇顏色的方式略有不同,它並沒有解決問題的一件事。 – 2013-05-07 12:57:01

+0

我以前使用過它,它工作。將它改爲使用Tykin提到的十六進制方法,正是問題所述。也許有人可以提供一些洞察,爲什麼Tykin的方法不適合這種情況。 – Trevor 2013-05-16 15:58:39

+0

這工作。我只是將0x更改爲#,它工作正常,任何想法爲什麼? – 2014-02-05 22:07:49

0

我有同樣的問題。

對於Visual Studio中的Xamarin用戶等。

請剛剛的setContentView(Resource.Layou後粘貼......在活動課。

// Setting ActionBar (Toolbar) background color natively var actionBar = this.ActionBar; actionBar.SetBackgroundDrawable(new ColorDrawable(Color.Black));

,你認爲有必要做更多的動作條可變你可以改變它。

感謝希望這有助於。