0

我設置了我的動作欄的背景,但在分割模式下背景不起作用。android動作欄樣式(按下分割樣式和菜單項)

我知道我必須設置這樣的:

<item name="android:backgroundSplit">@drawable/some_drowable</item> 

但它不會在API級別工作11

是否有任何其他方式做到這一點?

我有行動酒吧風格另外一個問題,我想,當它被按下改變操作欄圖標的顏色(不包括後臺區域,但替換圖標)。我怎樣才能做到這一點 ?

+0

檢查值,值-11,值-14文件夾相同樣式appllied? –

+0

謝謝,我現在可以爲api 14設置背景分割,並且可以工作! 用戶使用應用程序與API <14查看不同的背景,這不是一個問題。 – tulkas85

+0

不用客氣 –

回答

0

首先,我不知道該怎麼做。但第二,我可以幫助你。這並不難。

基本上,操作欄僅僅是一個與你否則將菜單按鈕下方設置任何菜單選項欄。

因此,它是在與呼叫您的應用程序的啓動創建

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    ... 
} 

而且任何選擇的選項將導致

@Override 
public boolean onOptionItemSelected(MenuItem item) { 
    ... 
} 

被調用,與菜單項的用戶選擇。

但是,這涉及到的選項菜單,這是您要使用更新操作的一個的第三種方法。它被稱爲onPrepareOptionsMenu(Menu menu)link)。在此方法中,允許更改使用onCreateOptionsMenu(...)創建的菜單。

因此,通過這些知識,您可以通過調用item.getItemId()來檢查在動作欄中點擊哪個動作,從而保持onOptionsItemSelected(...)中特定項目的(全局)狀態。現在

,你將有你希望它是在其中的作用是在操作欄上輕敲知識,和國家。

別急,當應用程序啓動已經創建了操作欄。那麼如何讓它重新創建呢?其實很簡單。您只需致電invalidateOptionsMenu()link)即可使其無效。這會導致Android重新繪製操作欄,並導致整個行onCreateOptionsMenu(...)onPrepareOptionsMenu(...)再次被調用。

所以,現在你有你需要的一切:

  1. 確定什麼樣的行動已經被用戶點擊(onOptionsItemSelected(...)
  2. 你想要什麼狀態保持
  3. 如何重繪操作欄

當正在重繪操作欄,您可以更改操作欄上的項目的圖標,以便將更新到你希望它是國家。

+0

謝謝,但有沒有最簡單的方法?我認爲像onpressed =「icon_pressed」風格xml – tulkas85

+0

Nope,操作欄是靜態的,當它被創建和繪製時,你不能改變它,直到它得到一個要重繪的調用。 – ThaMe90

+0

我對不同的菜單項目有不同的活動,所以我必須寫很多代碼才能做到這一點。 – tulkas85