ActionBar上特定菜单项的不同外观/样式

时间:2011-12-22 00:14:55

标签: android android-actionbar

在我的Android应用程序中,我根据android developer blog和其他地方的提示自定义ActionBar。我希望能够突出显示ActionBar上的特定菜单项,例如具有不同的背景颜色,因为它特别适用于当前可见的片段(实际上添加了它)。但是我没有发现任何可以做到这一点的迹象,也没有我自己设法做到这一点。可能吗?如果是这样的话?

1 个答案:

答案 0 :(得分:13)

所以我现在开始使用这个技巧了。这里是片段代码

@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。它似乎是一个替代视图,而不是默认菜单项的实际视图..