使用操作栏时,如何为设置了操作视图的项目显示祝酒(长按)?

时间:2014-01-25 20:59:46

标签: android android-actionbar

我正在动态添加到操作栏菜单,并使用在创建项目时设置的自定义ActionView

使用了动作视图,因此我可以使用自定义视图(而不是简单的可绘制视图),它具有一些逻辑来控制它的显示方式。

问题是长按这些项目时没有显示吐司。我相信这可能与click事件没有传递到底层操作栏有关。该项目不显示可选背景,如静态菜单项,并且单击时不会触发onOptionsItemSelected,我必须手动设置点击监听器到操作视图。

这是我添加菜单项时的代码示例。

    MenuItem item = _menu.findItem(obj.getId());
    if(item == null)
        item = _menu.add(Menu.NONE, obj.getId(), Menu.NONE, obj.getName());

    item.setTitleCondensed(obj.getName().substring(0,1));
    item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
    item.setTitle(obj.getName());

    LayoutInflater layoutInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View v = item.getActionView();
    if(v == null)
        v = layoutInflater.inflate(R.layout.favourite_obj, null);

    if(obj.getName().length() > 0){
        ColourIndicator letter = (ColourIndicator) v.findViewById(R.id.colour);
        letter.setColour(obj.getColour());

        item.setActionView(v);

        final Obj o = obj;
        item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                // this does not fire
                return false;
            }
        });

    }

我发现旁边没有资源,所以我只能假设有一个我看不到的简单解决方案。

0 个答案:

没有答案