2011-02-05 128 views
3

打开上下文菜单我使用Android来创建应用程序。 我有,我创建像下面通过点击菜单选项

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.mymenu, menu); 
    return true; 
} 

菜单是从一个XML文件加载选项菜单的活动:

<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:title="Item1" android:id="@+id/item1" /></menu> 

当我点击项目1,我用onOptionsItemSelected我的活动工作后点击那样:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch(item.getItemId()) { 
    case R.id.item1 : 
     // here, I would like to open a contextual menu 
     return true; 
    default : 
     return super.onOptionsItemSelected(item); 
    } 
} 

所以,当用户点击项目1我想打开一个上下文菜单。首先,我不知道是否可以直接打开上下文菜单,而不需要在屏幕上使用屏幕保持位置,就像在互联网上显示的几个教程一样。

如果可能的话如何以这种方式打开上下文菜单?

我想在我的项目1的情况下使用registerForContextMenu()openContextMenu()但我应该在参数中使用哪个视图?

如果有人知道如何做到这一点,我想知道我该如何做。

回答

4

如果你真的想要一个上下文菜单,那么我会使用Android设计的上下文菜单,通过长按一个给定的项目。人们习惯了这一点,应用程序不应该有所不同。

交替有点复杂。你可以做的是将你的菜单加载到一个单独的活动中,你将其作为一个对话框窗口(你知道用一个褪色的半透明背景)。这可以通过在manifest.xml文件中,应用Theme.Dialog风格到你的活动很容易做到:

<activity android:name=".activities.TagPopupActivity" 
      android:label="Tagging" android:theme="@android:style/Theme.Dialog"> 
       ... 
</activity> 

或者你也可以直接创建一个对话框窗口描述here。然后,通过在主列表活动中实现适当的点击监听器,然后当用户单击该项目时,您可以获取其上下文(即单击列表),然后检索其ID并将其打包成一个包,并转发到“菜单” - 作为弹出对话框的活动。

+1

感谢您的回答。 实际上,我从Android开始。所以我不太清楚做什么是最好的做法。 在我的脑海里,有两种可能性。首先,我创建了一个上下文菜单,但显然这对于​​用户体验来说不是一个好主意。 其次,我认为通过点击显示我想在用户上下文菜单中提出的选项的项目来启动新活动。也许这是一个更好的主意。 所以,我认为我要编写第二个想法。 – sylsau 2011-02-05 16:34:03

2

我知道这个帖子是旧的,但这里有另一个解决方案(快速但不真正性感)。

添加虚拟视图,并将可见性设置为消失,并使用此视图触发上下文菜单。