自定义组件中的上下文菜单
问题描述:
我正在构建一个自定义组件,我希望在上面有上下文菜单。到目前为止,我已经成功地创建并显示上下文菜单执行以下操作:自定义组件中的上下文菜单
public class CustomComponent extends LinearLayout implements OnClickListener, OnCreateContextMenuListener {
private final MenuInflater menuInflator;
public CustomComponent(final Context context) {
this(context, null);
}
public CustomComponent(final Context context, final AttributeSet attrs) {
super(context, attrs);
menuInflator = new MenuInflater(context);
final LayoutInflater inf = LayoutInflater.from(context);
inf.inflate(R.layout.component, this, true);
setOnClickListener(this);
setOnCreateContextMenuListener(this);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
menuInflator.inflate(R.menu.menu_context, menu);
}
@Override
public void onClick(View v) {
showContextMenu();
}
}
我面对现在的问题是,我不知道如何让onContextItemSelected()函数在这个组件中被调用。我正在浏览Activity中的一些源代码,并注意到它有一个包含这些回调的mWindow成员。我不确定这是否可以这样做。有什么建议么?
答
寻找其他选项之后好吧,我发现了一个很simpel解决方案:
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
menuInflator.inflate(R.menu.menu_context, menu);
menu.getItem(0).setOnMenuItemClickListener(this);
}
@Override
public boolean onMenuItemClick(MenuItem item) {
// Do something
return false;
}
ofcouse你需要实现OnMenuItemClickListener这个工作