2011-12-22 44 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