RegisterForContextMenu ImageView?

3D-*_*tiv 3 android

我正在尝试使用浮动上下文菜单,我想知道是否可以通过按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);
}
Run Code Online (Sandbox Code Playgroud)

Yar*_*lyk 7

就像其他人一样,你可以在onCreateContextMenu中获得你的View,根据你为正确的项目夸大菜单.

registerForContextMenu(imageView);
Run Code Online (Sandbox Code Playgroud)

上面的方法需要任何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);
    }
}
Run Code Online (Sandbox Code Playgroud)

根据项目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);
    }

}
Run Code Online (Sandbox Code Playgroud)