3

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

2 回答 2

7

就像其他人一样,您可以在 onCreateContextMenu 中获取您的视图,基于您为适当的项目膨胀菜单。

registerForContextMenu(imageView);

上面的方法需要任何 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 不一样。单击上下文菜单中的项目时,您将收到 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);
    }

}
于 2013-02-19T12:21:04.303 回答
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);
    }
}
于 2015-09-02T05:48:52.670 回答