我正在尝试使用浮动上下文菜单,我想知道是否可以通过按ImageView中的图像来激活此菜单?
我的第一个问题是如何处理registerForContextMenu和ImageView?我使用GridView和ListViews搜索并查找大多数示例。
我已经在xml中创建了菜单,我应该在带有开关的活动中使用此方法:
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
// TODO Auto-generated method stub
super.onCreateContextMenu(menu, v, menuInfo);
}
答案 0 :(得分:6)
就像其他人一样,你可以在onCreateContextMenu中获得你的视图,基于你为正确的项目夸大菜单。
registerForContextMenu(imageView);
上述方法需要任何View类。 每次为另一个View调用registerForContextMenu()时,都会调用onCreateContextMenu()来处理正确的菜单创建。
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
if (v.getId == R.id.youtImageView) {
getMenuInflater().inflate(R.menu.image_menu, menu);
}
}
根据商品ID,您可以决定点击哪个菜单。您必须确保不同视图的菜单项的ID不相同。 单击上下文菜单中的项目时,您将收到带有单击的MenuItem的onContextItemSelected()回调
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.image_menu_item_do_something:
doSOmething();
return true;
default:
return super.onContextItemSelected(item);
}
}
答案 1 :(得分:0)
在onCreate
ImageView image = (ImageView) findViewById(R.id.image_view);
registerForContextMenu(image);
image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openContextMenu(image);
}
});
context_menu_main.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/action_option"
android:title="@string/action_option_text" />
</menu>
和..
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
getMenuInflater().inflate(R.menu.context_menu_main, menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_option:
Log.e("TAG", "Option";
return true;
default:
return super.onContextItemSelected(item);
}
}