Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android RegisterForContextMenu图像视图?_Android - Fatal编程技术网

Android RegisterForContextMenu图像视图?

Android RegisterForContextMenu图像视图?,android,Android,我正在尝试使用浮动上下文菜单,我想知道是否可以通过按ImageView中的图像来激活此菜单 我的第一个问题是如何处理registerForContextMenu和ImageView?我搜索并找到了GridView和ListView的大多数示例 我已经用xml创建了菜单,我应该在带有开关的活动中使用此方法: @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo m

我正在尝试使用浮动上下文菜单,我想知道是否可以通过按ImageView中的图像来激活此菜单

我的第一个问题是如何处理registerForContextMenu和ImageView?我搜索并找到了GridView和ListView的大多数示例

我已经用xml创建了菜单,我应该在带有开关的活动中使用此方法:

   @Override
public void onCreateContextMenu(ContextMenu menu, View v,
        ContextMenuInfo menuInfo) {
    // TODO Auto-generated method stub
    super.onCreateContextMenu(menu, v, menuInfo);
}

与其他人一样,您可以在onCreateContextMenu中获得视图,并在此基础上为适当的项膨胀菜单

registerForContextMenu(imageView);
上面的方法需要任何视图类。 每次为不同的视图调用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不相同。 单击上下文菜单中的项目时,您将收到onContextItemSelected()回调,其中包含已单击的MenuItem

@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);
    }

}

确保在
onCreate
中有这些方法:

ImageView image = (ImageView) findViewById(R.id.image_view);

registerForContextMenu(image);

image.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                openContextMenu(image);
            }
    });
上下文菜单\u 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>

但是我是否应该先使用registerForContextMenu将其与菜单的id连接起来?当然可以。我认为不明显的部分是处理菜单,而不是注册。答案更新了。嗯,我不确定它是否有效?我正在使用AVD模拟器,我想如果我点击图片,菜单应该是可见的?回答得很好,我想我会指出一个小问题。它应该是
v.getId()
@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);
    }
}