【问题标题】:Different look/style for specific menu item on ActionBarActionBar 上特定菜单项的不同外观/样式
【发布时间】:2011-12-23 06:05:23
【问题描述】:

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

【问题讨论】:

  • 您确定使用稍微不同的图标不会更容易吗?或者您可以通过自己的自定义膨胀操作视图或ActionProvider 完成的其他前台更改?
  • 目前这些都是文本,图标会更难理解。就自定义操作视图或 ActionProvider 而言...我将不得不对此进行研究。
  • 你可以改变文本的前景色,至少如果你去 action view/ActionProvider 路线。不幸的是,Android 不支持<blink> 标签... :-)
  • ActionProvider 不是兼容性包的一部分,并且包装它似乎比它的价值更令人眼花缭乱。

标签: android android-actionbar


【解决方案1】:

所以我现在用一点技巧让它工作。这是片段代码

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多