2011-12-22 54 views
6

在我的Android應用程序中,我將自定義ActionBar以下來自android developer blog和其他地方的技巧。我希望能夠突出顯示ActionBar上的特定菜單項,例如具有不同的背景顏色,因爲它特別適用於當前可見的片段(實際上添加了它)。但是,我還沒有發現任何跡象表明,這可以做到,我也沒有設法做到這一點。可能嗎?如果是這樣如何?ActionBar上特定菜單項的不同外觀/樣式

+0

您確定使用稍微不同的圖標會不會更容易嗎?或者您可能通過自定義的虛擬操作視圖或ActionProvider完成的其他前景更改? – CommonsWare 2011-12-22 00:56:35

+0

目前這些文字和圖標會更難理解。就自定義操作視圖或ActionProvider而言......我將不得不考慮這一點。 – 2011-12-22 01:06:16

+0

您可以更改文本的前景色,至少如果您轉到操作視圖/「ActionProvider」路線。不幸的是,Android不支持''標籤...... :-) – CommonsWare 2011-12-22 01:10:00

回答

12

所以我現在用它來處理一些問題。這裏有雲的片段代碼

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    super.onCreateOptionsMenu(menu, inflater); 

    menuItemCreateCart = menu.findItem(R.id.menuItemCreateCart); 
    if (menuItemCreateCart == null) { 
     menuItemCreateCart = menu.add(0, R.id.menuItemCreateCart, 0, R.string.Create); 
    } 

    TextView tv = new TextView(getActivity()); 
    tv.setText(R.string.Create); 
    tv.setTextColor(getResources().getColor(R.color.green)); 
    tv.setBackgroundColor(getResources().getColor(R.color.lightBlue)); 
    tv.setOnClickListener(
      new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        createCart(); 
       } 
      } 
    ); 
    menuItemCreateCart.setActionView(tv); 

主要的疑難雜症是,onclicklistener必須建立在你設定的動作視圖,而不是菜單項爲它工作的視圖設置。這樣你可以做任何你喜歡的事情。

另請注意,您不能使用getActionView來檢索帶標題的原始設置視圖,因爲它將返回null。它似乎更多的是一個替代視圖,而不是默認菜單項的實際視圖。

+0

爲我工作:) – Shivansh 2015-02-05 07:41:25