我正在动态添加到操作栏菜单,并使用在创建项目时设置的自定义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;
}
});
}
我发现旁边没有资源,所以我只能假设有一个我看不到的简单解决方案。