如何通过单击选项菜单获取上下文视图

时间:2010-12-10 17:52:11

标签: android

晕,

我的意思是通过单击其中一个选项菜单来显示上下文菜单。

我认为这不会很困难,但我无法在OptionsMenu类中获取View。

所以实际上它只是在OptionsMenu类上调用showContextMenu()。

有人可以给我一个提示吗?

TY!

3 个答案:

答案 0 :(得分:1)

可以通过长按以外的方式调用上下文菜单。如果您在活动中实现菜单选项,例如使用内部类,您应该能够调用上下文菜单:

yourView.showContextMenu();

请记住在onCreate上注册您的上下文菜单:

registerForContextMenu(yourView);

答案 1 :(得分:1)

最后成功了,这是一个非常简单的解决方案。

基本上我将View传递给OptionsMenu构造函数。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    this.setContentView(R.layout.activity_event);

    View v = findViewById(R.id.activity_event);

    registerForContextMenu(v);

    options = new Options(getApplicationContext(), getMenuInflater(), v);

    fillData(); 
}

...

   private class Options extends ActivityOptionsMenu {
        public Options(Context c, MenuInflater mi, View v) {
           super(c, mi, v);
         }
   }

...

     private abstract class ActivityOptionsMenu {
     ...

         public void onMenuItemSelected(int featureId, MenuItem item) {
            switch (item.getItemId()) {
            case R.id.directions:
                v.showContextMenu();
            }
         }
   }

感谢您的帮助。

答案 2 :(得分:0)

  

我的意思是通过单击其中一个选项菜单来显示上下文菜单。

AFAIK,您无法通过长按选项菜单选项来显示上下文菜单。

  

我认为这不会很困难,但我无法在OptionsMenu类中获取View。

View不会向您展示。

从字面上做你所寻求的唯一方法是不使用标准的Android选项菜单。您可以在活动中通过onKeyDown()观看MENU键,此时您可以显示您想要的任何内容,包括支持上下文菜单的内容。

然而,上下文菜单在用户中并不是特别受欢迎,仅仅因为它们不是很容易被发现。用户永远不会阅读文档,即使它是提供的,他们往往不会随机刺伤屏幕,看看是否会弹出一个菜单。他们甚至不太可能决定按住假选项菜单选项来查看是否会弹出上下文菜单。

因此,我建议您考虑其他一些方法,以提高可用性。